Is there any way to forward the conversation which started with the AutoPilot to a real agent in Flex? For example, somehow, a customer may want to talk to or text with a "Real" agent when they find that the AI bot cannot answer their question. Is that possible to achieve this?
Twilio developer evangelist here.
The best way to achieve this is to follow this guide on setting up Handoff from Autopilot to human agents.
Briefly, you need to set up an Autopilot task called something like "talk-to-agent". That task should not include a "listen" directive, so that when the task is complete the Autopilot session is over.
Then, you direct incoming messages through a Studio Flow and into the Autopilot bot. When the session ends, you can then check the CurrentTask attribute of the Autopilot widget using a Split widget. If the task is equal to "talk-to-agent" you can direct the flow into Flex with the Send to Flex widget.
Related
We have set-up our Flex, and stuck on one of the last steps. We are a small office, and have a main number that clients call us on. If they ask for a specific employee, more importantly, if the specific employee is required to answer the client issue, and they are marked UNAVAILABLE, it doesn't appear we have access to send the call to voicemail (the transfer button is grayed out).
Is there a work around? A way to direct call the VM? Do we need to tweak our flow? If not, it appears we need to be logged in 24/7 to have access to VM's. A fairly inefficient and expensive option.
OK, I think I know what the issue is. A call comes through to one agent in Flex, but they need to transfer it to the other agent. If the other agent is also available, they can transfer the call no problem. If the other agent is not available, you would like to transfer the call to that agent's voicemail, but there's no way to do that right now.
The issue is that Flex is built around available agents and doesn't have voicemail built in. You've added voicemail as part of the Studio Flow, but this is not integrated to the Flex interface at all.
I would solve this with a Flex plugin that does a couple of things:
Add a button to the agent transfer list for unavailable agents to send to their voicemail.
That button would trigger a request to a Twilio Function, sending it the Call's Sid and the agent you want to transfer to.
The Function could then use the calls API to update the call, redirecting it to the existing voicemail handlers that you have for your agents.
I'm afraid I don't have example code for this plugin, but there is great documentation on building Flex plugins that you can follow to get up to speed.
so, the flow is, I call enqueue Twiml verb. It creates a task and assigning to a specific agent. I have a task router callback on reservation.accepted event. I got it, but once I update a customer call with Stream Twiml - it's removing a customer from the conference which Flex creates. I'd like to avoid it somehow. To avoid that I update a customer participant with end_conference_on_exit: false attribute. Then I update a customer call with Stream and Dial.conference to get a customer back to a conference which I do not like. Is there any easier way to implement it ?
Twilio developer evangelist here.
Updating a call like that will always take it out of it's current TwiML flow and you would have to redirect back to where it was, like you have already implemented.
I know this is not starting the stream after the task is accepted, but I think the best way to implement this right now is to use the fork stream Studio widget directly before the send to Flex widget in the Studio Voice IVR flow.
I am creating Autopilot which greets the user when a Twilio number is called.
Then Autopilot will ask the user if he wants to connect with the agent according to the answer of the user. If user say yes then Autopilot will transfer the call to task router. By seeing Twilio example i Have reached to handoff the call to task router.
The problem is that I cannot specify Matching Task. In a Taskrouter workflow, I have 2 to 3 filter I want to pass matching task so that A particular filter is run of the workflow
Currently, I am using the below command For handoff.
"handoff": {
"channel": "voice",
"uri": "taskrouter://workflowid",
}
Here I need to able to pass matching task (An addition parameter) something like selected_agent === 'lorem' which will tell the workflow which Particular task(Filter) to run
From the documentation (the Dialogue Payload is a task attribute):
When handing off an Autopilot voice session to Task Router or Flex,
you need to provide the destination the Task Router workflow Sid. When
the Hand-off is executed the Autopilot session is terminated, the call
is enqueued with the Dialogue Payload as a task attribute.
We are using Task Router for our Call Center Project. Incoming calls routing through Task Router to our agents. Now, We have to impliment Video Call as well. I want to understand, how we can use Same Task Router for Voice Call and Video call to distribute to our Agents ?
Is there any code of reference example to use that ?
Twilio developer evangelist here.
We have one example of a multichannel contact centre that is powered by TaskRouter. You can see it on GitHub here: https://github.com/nash-md/twilio-contact-center.
When you integrate Voice with TaskRouter, the TwiML integration makes it straightforward to create tasks by enqueueing the call to a workflow. When you are working with other inputs you need to manually create the tasks and handle the assignment on the other end too. This app should help you see how that works.
I'm not super familiar with the codebase myself, but you probably want to start by checking out the task controller which starts video chat rooms and creates a task to match. Then the workflow controller is the client side component that deal with receiving, accepting or denying reservations.
Let me know if that helps at all.
We are setting up a call center using Twilio.
At the end of the greetings and menus, our users are redirected to a queue waiting for the next available agent.
We would like the system to:
- Call automatically the next available agent. This is to prevent the agent from dialing the queue to know if users are waiting.
- Be able to change the order of the queue. Our users have different priorities.
How can we get this done? What are the best practices?
FYI: We are using PHP, TWIML and we DO NOT have our own IPBX (Not able to use SIP Protocol).
Thanks,
Dimitri
Twilio evangelist here.
There are a few ways you could do this, but my suggestion would be to use the action attribute of the Enqueue verb.
The action attribute lets you tell Twilio about a URL that you want it to request when a caller leaves the Queue. As part of this request, Twilio will pass you a parameter named QueueSid. Using the QueueSid, you can make a request to Queues endpoint in the Twilio API, see if the current_size of the Queue is greater than zero, and if it is initiate a call out to the next available agent.
Hope that helps.