Access call history in app for Microsoft Teams - microsoft-graph-api

While it seems it is not possible for an app to register incoming calls, I wondered if it would be possible to access the call history of the current user?
It looks like there is a Graph API to get information of a specific call by id, I didn't find anything about getting the call history or the last call.
This could be a workaround for our approach: We want to enable the employees to make several notes on incoming calls and reference them with existing items in another web application.
Is there any way to achieve what I'm trying to do?

There seems to be a new Preview way of and application subscribing to a call event though still no way to get the full history.
Application
CallRecords.Read.All:
Subscribe to new call records (POST /beta/subscriptions).
There are more details here https://learn.microsoft.com/en-us/graph/cloud-communications-callrecords but it suggests you could capture the incoming call and allow notes as you want.

Related

How to get a list of active PSTN calls in Teams using the Microsoft Graph API

We're looking for a way to get a list of all currently active PSTN calls being made into MS Teams. We've tried this:
https://learn.microsoft.com/en-us/graph/api/callrecords-callrecord-getpstncalls?view=graph-rest-beta
That's almost exactly what we need except records do not seem to appear here until the call has ended. What we need for the app we're trying to build is live call records.
We've also tried it by creating subscriptions and getting the ID of specific calls then looking up call records, but this data also appears to be delayed.
Is there a method we're missing here, or equally, is this something that may be added to the API some point soon?
Currently there is no graph API to get a list of active PSTN calls in Teams.
Microsoft will always focus on customer’s feedback and experience, some new features would be added to the services based on customers' feedback in the future, we also recommend you give your new idea in Teams UserVoice here.
They clearly mentioned in the document, we can not fetch the details directly. But you can fetch the records from your application. Using app side bearer token.

What is the best way to assign incoming task (SMS, call, chat) to a person based on custom logic?

I need to create a rule in Twilio Flex to assign incoming calls, SMS, chat messages to different people based on a custom rule in our existing system, e.g. make a GET request to our backend and decide based on the returned response.
Is this possible to implement with Twilio Flex? What is the best way to do it?
I would prefer to keep as much logic as possible on our server, to avoid all the button clicking and drag&dropping widgets around and to keep it in VCS.
I solved the problem by using a Twilio Function in Studio.
When a call comes in to Studio, it makes an API call via the function that returns some custom JSON data (e.g. assignedWorkerEmail). Then I can pass this data to the Send To Flex widget, which adds that data to its task's attributes. Further routing within Flex happens based on the task attributes.

Trying to get analytics on Microsoft teams calls

I am trying to put together analytics on Microsoft teams calls. I would like to get hold times, number of transfers, call time, etc. I came across this call https://graph.microsoft.com/beta/communications/callRecords and it gives me a list of calls with call times, but I can't find a way to get hold times, what line it came in on, etc. Greatly appreciate any pointers.
First of all, this end point https://graph.microsoft.com/beta/communications/callRecords only allows you to query a single call record using its ID, it does not support querying a list of call records for the whole tenant or for a specific user.
The only way currently to find this ID to query the call record is by setting up a web hook to receive change notifications. Refer to the following documentation for more info on change notifications.
To directly address your question, i am not one hundred percent sure but i believe the information you're looking for could be found inside the list of sessions and segments inside a call record.

How to show future events with organizer_list_events on the EventBrite API

I always get ended events from the eventBrite api when i use the organizer_list_events. I tried with statuses live, started (and both). But that doesn't seem to work.
The event_search api has a "date:Future" possibility. Which is working fine, but then I don't have a possibility to pass the organiserId.
Note, I work on the platform team at Eventbrite
organizer_list_events does not accept a status parameter:
http://developer.eventbrite.com/doc/organizers/organizer_list_events/
However, user_list_events does:
http://developer.eventbrite.com/doc/users/user_list_events/
In the case that one user has one organizer, these calls should return the same data. It's possible for one user to have multiple organizers, in which case user_list_events could return more data than needed. Still, using the status parameter should cut down on what you're currently receiving.
We're in the process of building a new and much improved API, but I can look at adding a status field to organizer_list_events.
Using the user_list_events I just did this (in c#):
items = XElement.Parse(xmlResult).Elements("event").Where(e=>e.Element("organizer").Element("id").Value == this.OrganiserId.ToString());

iPhone Data Best Practices - caching vs remote

I'm developing an iPhone app that uses a user account and a web API to get results (json) from a website. The results are a list of user's events.
Just looking for some advice or strategies - when to cache and when to make an api call... and if the iPhone SDK has anything built in to handle these scenarios.
When I get the results from the server, they populate an array in a controller. In the UI, you can go from a table listing view, to a view of an individual event result - so two controllers share a reference to the same event object.
What gets tricky is that a user can change the details of an event. In this case I make a copy of the local Event object for the user's changes, in case they make an error. If the api call successfully goes through and updates that event on the server, I take these local changes from the Event copy and set the original Event object to match with setters.
I have the original controller observing if any change is made to the local Event object so that it can reflect it in the UI.
Is this the right way of doing things? I don't want to make too many API calls to reload data from the server, But after a user makes an update should I be pulling down the list again with the API call?
...I want to be careful that my local objects don't become out of sync with the remote.
Any advice is appreciated.
I took a similar approach with an app I built. I simply made a duplicate version of the remote data model with Core Data, and I use etags on the backend to prevent sync issues (in my case, it's okay to create duplicate records).
It sounds like you're taking a good approach to this.
Some time back, I developed an iOS app where in, I had almost same requirement to store data on server as well as locally to avoid several network call and also user can see their information without any delay.
In that app, user can store photos, nodes, checkIns and social media post and with all this data, app can form a beautiful timeline. So what we did was, we had everything locally and whenever user phone come in some WIFI zone, we start uploading that data to server and sync both (local and remote) databases.
Note this method works well when only one user can access this data.

Resources