Azure Communication Services logs don't seem to show the caller's ID - azure-communication-services

I implemented Azure Communication Services for a p2p video application.
Callers application uses the ACS mobile SDK, whereas callees use a web app and the web SDK.
In the call log table in log analytics (ACSCallSummary) I find two entries per call, with the same correlationID. The record for the callee correctly has the ACSID in the "identifier" field. The record for the caller doesn't (Identifier is empty: for example in correlationID 97001b82-d875-4fa2-957f-900b9e6d168e)
How can I count the calls made by a user if the caller's record in log analytics doesn't show the acs id?

Related

How to use Salesforce Field Service Mobile Flow in app AND lightning web

I am designing a Field Service Mobile Flow for a Salesforce instance (release Winter '23 Patch 17.7) using the Field Service Lightning package to manage technicians with service appointments in the field. The flow will be presented to technicians in the field in the Salesforce Field Service Mobile (FSM) app on iOS devices.
This flow will be added as quick action on a specific object, e.g. a ServiceAppointment object. Hence it will be presented in the app to the technician to execute the flow. Additionally, quick actions are also shown in the lightning web view of the object, enabling to execute the same flow, even though it is a Field Service Mobile Flow.
The challenge occurs, when trying to use the Id of the calling record (here the ServiceAppointment) as input.
The FSM app provides the Id of the calling object as variable Id, while a flow executed from the lightning web view passes the variabled recordId.
How can one handle this to use the same Field Service Mobile Flow in the FSM app AND in web lightning view.
I added a subflow to retrieve the origin of the call, differentiating between the two input variables, and setting an output variable current_record_id accordingly.
The condition checks, wether the input variable Id or the input variable recordId is set and assigns the output variable current_record_id accordingly.
You might already spot the actual challenge. The behaviour of not-provided variables is different in the FSM app, the web call and (to make it even worse) when debugging the flow.
The following table shows my checks for the different origins and the resulting outcome (which check proofs as true)
Path
Call flow from
outcome
1
FSM app (provides Id)
recordId is null
2
Lightning Web (provides recordId)
Id is empty
3
Flow designer debug (recordId provided)
Id is null
4
Flow designer debug (Id provided)
recordId is null
hence we have to explicitly check for null OR empty for the missing variable.
Now you can use four Field Service Mobile Flow via a quick action the Field Service Mobile App, in Salesforce Lightning and in the Flow Debugger successfully.

Google Assistant actions on google

All my hardware is already developed. I use MQTT for communication between my devices, I have lights, fans, heaters and many more ioT appliances. I can controll all of these from my Android application which i have built. I would like to use Google Assistant to control my devices as well. The status of my lights (on/off) are stored in a sql database and when ever a change occurs to the database(detected by the hardware) my hardware can control that specific light. In My Android app i do the same thing which is updating the databases value(on/off) of the light and the change is detected by my hardware platform. Can i use Google Assistant to update a sql database value?
I can create a webserver( ASP.NET C#) and pass the command to the sql database of my relevant customer if google assistant can invoke the username or email, lightID, command to my webserver. Can google assistant do this? If not how would achieve this.
It sounds like you want to take a look at the Actions on Google Smart Home API which will let the Assistants Smart Home controls work with your control server directly.
Without knowing exactly how your database or existing web server are configured or hosted, I can speak only broadly at best. Your web server will need to implement two primary things:
You'll need an OAuth2 server that can issue tokens that represent your users. This is how Google will associate the user's account on the Assistant with your account, and how Google will identify (to you) which user is issuing the command.
You will need to implement a webhook at a URL on your web server. This webhook will be sent a POST message containing a header with a valid auth token (that you issued) and a JSON body. The JSON will contain information about the command that has been issued by the user. Your HTTP reply body will also be JSON. For details of the JSON formats and all the fields that it can send and that you must reply with, consult Google's documentation.
There are a number of different commands (which Google calls "intents") that Google can send you on behalf of the user. You should be able to handle all of them by either querying or modifying your database:
SYNC - A request for what devices this user has, some of their configuration information, and what commands they respect.
QUERY - What is the current state of the devices for this user.
EXECUTE - Change the state on some of the user's devices.
RESYNC - (Future update) A re-request of the user's device info.

Would I get charged for clients' Cloud Storage JSON API calls?

I built a package in R which basically wraps around the Cloud Storage JSON API. I included a default OAuth app (that is a client id and client secret, see documentation) in the package. The client id and secret are created and hosted in my own cloud platform project with my billing details. The R package uses the OAuth app to ask for end user's authentication before any API calls and stores the token for the end user. Any subsequent API calls are sent with the retrieved token.
I noticed that the stats about the end users' API calls are showing up in my own project because it hosts the OAuth app. In this case, do I get charged for those API calls by end users?
All calls to GCS are always billed to the bucket that they reference. Calls that don't specify a specific bucket, like "list buckets in a project", are billed to the project in question.
Your JAVA JavaScript Structructured Omitts Notations are very local and require a great deal with NAMESPACE as it will resolve quite rampantly if not given a proper address pool I suggest Googles DNS alongside subsequent calls within the given IP zone 10.10.10.10/12 etc ... As higher languages like human language tend to fall outside these zone and need to be delegated ... Might be jumping from 0.0.0.0 to higher address pools without knowing can be a pain.

Downloading of Facebook IDs within terms of service?

I have an app where people login to our site, search for FB groups based on keyword, and then download a text file of UIDs (generated by the API, not by scraping), for the purpose of creating a custom audience in the Power Editor and uploading it back.
Is that allowed?
It is okay to do so, as long as it is strictly for the functionality for your app and your users that will be downloading the lists of ids have agreed to keep them confidential. These are the specific items from the Facebook platform policy which address what you cannot do with user ids:
II
6) You will not directly or indirectly transfer any data you receive from
us, including user data or Facebook User IDs, to (or use such data in
connection with) any ad network, ad exchange, data broker, or other
advertising or monetization related toolset, even if a user consents
to such transfer or use. By indirectly we mean you cannot, for
example, transfer data to a third party who then transfers the data to
an ad network. By any data we mean all data obtained through use of
the Facebook Platform (API, Social Plugins, etc.), including
aggregate, anonymous or derivative data.
7) User IDs for any purpose outside your application (e.g., your
infrastructure, code, or services necessary to build and run your
application). Facebook User IDs may be used with external services
that you use to build and run your application, such as a web
infrastructure service or a distributed computing platform, but only
if those services are necessary to running your application and the
service has a contractual obligation with you to keep Facebook User
IDs confidential.
Make sure that your app doesn't break either of those rules or any other rule in the Platform Policy.

REST API for Windows Azure Mobile Services

One of the things I enjoy about Parse is the REST API which allows me to send push notifications to "channels" from an external website. I am curious if this, or something similar is available with Windows Azure Mobile Services.
From what I can see, the best way to achieve this result is to create a table which stores push notifications on the Azure Mobile Services. Override the onInsert node.js script to send a push when a record is inserted. The insert is coming through the existing REST API which does allow me to interact with the tablet itself.
What I would like is the ability to provide, for example, my iOS Device Token to the API along with various application access credentials to a REST endpoint and use Mobile Services to send the notification on my behalf, while keeping the information on those clients in my own database hosted in SQL Azure or another location.
Thanks for any insight.
Jason
Today this is posible by creating a "virtual" table in Mobile Services which you only use for the scripting layer. Instead of performing request.execute(), you'd just put in the code that calls push.APNS(or whichever platform you're pushing to) to push out to your client. You can use the mssql module to execute a stored procedure or custom sql on the connected database (which could then talk to a different SQL Database if you are storing the data separate from the DB connected to Mobile Services). As far as getting data to the service, just send over any data you need just like if you were going to insert the data into the table (so they will be fields on the ITEM parameter in the insert scripts) or use the optional PARAMETERS parameter when making a call against your MSTABLE object (and they'll be available on the REQUEST.PARAMETERS object in your scripts).
The API feature now can be used instead of the virtual tables. More detailed info in this question:
How to use the Azure Mobile Service API feature