I am running the sample from
https://learn.microsoft.com/en-us/samples/officedev/microsoft-teams-samples/calling-and-meeting-bot-sample-v4/
Which allows Teams calls to be made to and from a BOT.
It all works fine and I can see there are /callback events firing for the state changes in the calls. For example a request to call a user results in the user being called at his Teams application, and the states of the call being updated in the BOT
from Establishing->Established and then to
Terminated when one end hangs the call up.
However the Participants collection of the call is not being set. There is no participant information in the callback JSON, and if I try to poll for participants using :
graphServiceClient.Communications.Calls[callid].Participants
.Request()
.GetAsync();
that collection comes back as null.
I need to put one of the call parties on Hold and cannot do this without a participant id.
What am I missing ?
Any suggestions please ?
Related
In twilio studio, I'm trying to create a workflow to send an initial text if the person has never sent us a message before. I have already setup auto responses, but I can't get the program to check whether the person has “subscribed” or not. What am I missing?
you will need to create your own database to capture that metadata (firstContact=false or something similar) if they have previously responded and then respond with the appropriate message.
You can save this data to your CRM or a database, POSTing via the HTTP Request Widget or Run Function Widget (where you keep their opt-in records) and then refer to it when making an outbound response or REST API Trigger call, to determine if they responded previously.
It is important to make sure you have customer opt-in before initiating an outbound SMS.
You could use the Messages Resource and include the optional parameter of the incoming message from number. Check the response back from the API call and look for the body property.
If they've messaged you in the past you'll get a response and you'll see what they messaged you.
You could do this using a Twilio function and the run function widget or just use the http get widget and then use a split based on widget to make a branch based upon the returned JSON.
I have used Eloqua app connector in campaign. Its good to execute max 5000 records , that's Record per notification set to 5000, but I want export records more than 5000, so I update Record per notification is Zero as per the Eloqua documentation and then export using Bulk API.
I have success fully received all contacts Ex: 10074 contacts I have exported from eloqua each 1000 vice versa and saved in to Azure container
Only one issue I faced, thats in campaign, contacts not shown on wait step, still showing on App connector, contact status is fine as Awaiting action for each contacts. How to fix it?
When the app is performing the export, the app needs to update the record status using a Bulk API sync action. See the AppCloud responses.
Typically, the app provider will add a sync action to the export definition of the records in the step to set them to "active" upon export. The app provider could also set them to "complete" upon export, which would move them to the next step upon successful export, but it is common to have an action that should be completed before moving the records to the next step.
Using an Action Service as an example, the app will then perform action, then use a sync action to set the record's status after result of action, i.e. "complete" for success or "error" for failure. If data needs to be updated in Eloqua the sync action can be added to the import definition, this would be for the happy success path. If data does not need to be updated after action, a sync action definition can be used to just update the record status without importing any data. A separate sync action definition would be needed if there are any records that need to be set to error.
I'm working on slack bot that will generate some creds for users, so it must be asked and reply in direct messages only.
It works with message.im Slack event, but event is triggered twice - when user asks bot AND when bot replies:
I have a trap for second event in my code:
if "subtype" in SLACK_EVENT["event"]:
print('Ignore bot event..')
exit(0)
..but I'd like to get rid of that.
Can I somehow combine (add AND condition) message.im with app_mention?
So user will send IM to bot and only of bot was mentioned event will raise?
That is not possible. If you are only interested to a subset of message.im events you need to filter them out in your code as you suggested.
Following the tutorials to creation of a task router (Workspace,queue,worker,task) and task creation via a Phone Call.
I am able to successfully land the call and create the task via my node.js app.
After adding the Agent UI via tutorial #
Agent UI Add Project
Here is the application flow:
Customer calls Twilio number
Twilio Voice Posts to a Node.js Rest API
Twilio Voice Posts to a Node.js Rest API
Twiml generated and user gets Prompts
User chooses an option
Response is Posted to a Node.js API and task is created
The above steps are success
On the client
Agent launches the node.js app with taskrouter.min.js and agent.js as provided in the sample above.
Customer gets the default hold noise, on the agent browser a series of events "reservation created, update and reservation cancels" are observed. Posting the console logs towards the end.
Observation 1, customer gets the default Hold noise confirms that Task is created successfully via the App. Task also seen on the Twilio Admin GUI
Observation 2, Getting a sequence of Reservation,Update,Cancel events multiple times.Also Observed that the dateCreated, dateUpdated and dateStatusChangedare year1970 , 1970-01-17T17:52:39.413Z.
Any pointers would be greatly appreciated.
[Edit:]
I do see similar issues with the PHP Sample code as well. Found that the Date is not an issue.
[Edit:]
Reached out to Twilio Support, hoping to hear from them, no luck so far
[RESOLVED]
Heard back from twilio support, thanks twilio. Issue was with the Assignment Callback URL on the Workflow. My API was /Get. Changed it from Get to Post, to make it work. As the assignment URL was not reachable (via POST), task router was trying to cancel the reservation.
Twilio employee here.
This is result of TaskRouter being able to hit your AssignmentCallbackUrl with an HTTP POST request. We've noticed that on your Account there's this notification message:
Cannot POST /assignment
Please enable POST for your AssignmentCallback endpoint.
TaskRouter will actively cancel the reservation if it cannot hit your AssignmentCallbackUrl or there is an error when issuing an Assignment Instruction.
The several updates in the console are due to the fact that TaskRouter cancels the reservation due to not hitting the AssignmentCallbackUrl, moving the Worker back to the previous state (Available), and then trying to assign the Task again, and thus generating another Reservation for the Worker for the same Task (repeat 15x until the Max Task Assignment is hit).
Heard back from twilio support, thanks twilio. Issue was with the Assignment Callback URL on the Workflow. My API was /Get. Changed it from Get to Post, to make it work. As the assignment URL was not reachable (via POST), task router was trying to cancel the reservation.
I have a problem in the subscription process after adding a new attribute to the mod_roster_odbc.erl
This obviously required me to alter the table rosterusers adding a new column for the record as well as the queries get_roster (s) in the odbc_queries for this module. And then in the module mod_roster_odbc, I had to extend methods like process_iq (get and set(s)) methods and others like, record_to_string, raw_to_record, process_item_attrs, and also get_subscription_lists, and pending queries for the new attribute to be initialised when setting each element of the roster
I have tested my change to the point of setting each element of my roster and save it correctly to DB, the same goes for getting to roster and the new attribute/record is added just like expected.
Now, my problem is that I broke the subscription part in the client side. The client logic subscribes to each element of the roster, before this changed I was able to subscribe automatically between two contacts being online. As far as I understand, user A sets user B in its roster and subscribes and then server sends presence to user B with this request so that user B subscribes back to user A and user finally get them subscribed as "Both". This is not happening after my change in the server.
Currently, user A is able to set user B to its roster but it does appear offline and I can see that subscription is "None" from rosterusers, basically one has the other on the roster but they do not manage to be subscribed or see each other online. Just until user A sends a message to user B subscription get processed and Both are subscribed to each other.
Now, I would like to avoid providing my code changes because I do ask for hints to know where I might have broken this logic in the server side. What would be the part of the presence that got broken with so small change....