I have a deal I'm working on designing to deploy Amazon Connect to a contact center with 200 agents. Their volume is 95% outbound, and 5% inbound voice only. Their account managers receive qualified leads in their CRM (in this case SalesForce Service Cloud) and upon opening up the lead would like to click on the phone number in SalesForce and use the StartOutboundVoiceContact API to call the customer. Once they have the customer on the phone they would like to be able to do a no-hold consultative transfer to a different department that is staffed by loan officers and want to be able to do the following:
Agent A clicks on a button in the CCP or SF that places a new outbound call to a queue staffed with loan officers. Want to notify Agent B (the loan officer) that they are being reserved for a call from the account management department and then they "accept" the inbound call and Agent A is then able to bridge the two parties together and complete the transfer.
Is there a way to use DynamoDB, Custom CCP, and Lambda to build this type of solution?
Any thoughts or ideas would be greatly appreciate.
Sounds like you are looking for a "cold transfer"? This is doable using the Amazon Connect Streams API. Good blog post here that goes through several transfer scenarios.
It would not be possible to do a "no-hold" transfer for merging a call. Amazon Connect will always place someone on hold before joining a connection together for a conference call.
However, if you really wanted to bypass Amazon Connect's system, you could try the following( Using Amazon Connect Stream API ):
Silent the music for the queue that you are sending the call through.
Customer will be placed on hold for a few seconds.
Immediately merge the call onto the current call(Using Amazon Connect Stream API)
If agent connects within 7 seconds then current agent will terminate the call.
The one thing you can't get rid of would be the ringing to the third-party agent. Additionally, there may be some type of delay between the customer being placed on hold and being merged onto the current call. So, this may not be 100% ideal for your situation.
Related
I'm looking through documention but didn't find anything that can help me find registered clients to twilio voice incoming calls.
For example. I have 10 registered clients to javascript sdk, that can handle incoming calls by their identities. But on my backend I need to find out who is registered and who is not busy making another call.
Is there any endpoint or someting that can return list of users(identites, clients, devices) with their status?
Because with TwiML I can redirect incoming call up to 10 clients. But when I don't know who is ready to answer and not busy I can't redirect responsible.
Thanks for any leads.
Twilio developer evangelist here.
I'm afraid that there isn't a way to list your currently registered clients. But you have a couple of options with how to deal with this.
You could keep a list of your registered clients manually. Adding a client to the list as they log in and removing them when they disconnect.
Alternatively, you could consider using TaskRouter to keep track of this and control the passing out of incoming call tasks to available agents. Then the agents would log on and enter an idle status in TaskRouter, when they accept a call they would be busy, once the call is over they go through a wrapping up stage before you return them to idle and ready for another call.
I resolved it with another way. When the user connects a device to twilio, I put him in the presence group with WS. When the device starts calling, I put him in another presence group. On the backend, when recieving calls, I just check who is in the ready group and not in the calling one and connect him with this incoming call.
How can I listen for the creation of any new public channel on a chat service? I have seen client.channelAdded but it only works for private channels.
channelAdded
Fired when a Channel becomes visible to the Client. Fired for created
and not joined private channels and for all type of channels Client
has joined or invited to.
My use case is an internal support application where every first-time incoming SMS message from a customer user results in a new chat service channel for that particular customer user being created, and a chat message being added to the channel representing the SMS. The new channel is created via Twilio REST API.
I want to be able to have every agent user made away that there is a newly created channel (i.e. and open ticket), and then be able to join it if they want (thus making the channel public).
I supposed I could create all private channels and just invite all the agent users to the channel, but seems slightly hacky. Feels like there should be a cleaner way to do this.
Twilio developer evangelist here.
Thanks for the extra information you provided about your use case.
To start with, the channelAdded event will only fire under the circumstances that you described and not for every new public channel. Danila suggested using the webhook to trigger an event, but as you say you are already creating the channel yourself, so no need for a webhook.
Perhaps you could use a channel as a notification for your agents. Create a special channel that all logged in agents join. Then, when you create a new channel for a new open ticket, also send a message to the "open tickets" channel. You could use this channel to then simply notify your agents there is a new request, or you could fire off a function to get the latest channels so it is loaded and ready for your agent to join.
If you wanted something a little more lightweight than a chat channel for this, you could consider using a Twilio Sync list for the currently open tickets that you can then sync with your agents.
Let me know if that helps at all.
One of the possibilities to achieve desired is to add a webhook for the channel creation.
It may add member (customer support person) using REST API to the channel or will send a message to them using REST API.
I have two iOS apps, lets call it Agent app and Customer App.
I have a chat feature between these two apps, but the chats need to be recorded on the server.
I have created two Pusher Apps, one for each of the iOS apps. They both subscribe to their respective private-{id}-channel.
Now every time a message is generated from say Agent app (via HTTP request to server), I want server to create a pusher event with Agent's message on Customer's private channel.
Is it possible to achieve the above using Pusher Private channels?
One way you could achieve this is by having both users join the same channel.
Let's say you have two users: user-a and user-b. Both users subscribe to a common private channel private-chat-user-a-user-b.
let myChannel = pusher.subscribe("private-chat-user-a-user-b")
Then triggering client events on the channel
myChannel.trigger(eventName: "client-my-event", data: ["your": "data"])
Client events are a way of sending messages just between clients, without a server relaying them.
Disclosure: I work at pusher.
I wanted to record the chat on server, therefore, instead of making Customer App directly sending message on Agent App channel, I made the Customer App call my server API, which records the message and relies it on channel that Agent App is listening to.
So, a little context for you first: Our app only has forwarding and text messaging capabilities for our clients. Basically, we just set up a forwarding number in twilio for our client and they use that as their public number (on websites, advertisements, Google, etc.). Then when their customers call that number we ask them a quick question using the phone menu before forwarding the call onto their regular land line and sending them a text message later.
What do you suggest we do when someone wants to keep their current number (land line or otherwise) as the main phone number (online, website, ads, etc.) instead of using a new forwarding number?
Would they port their current number over to twilio, and then just get a new number with their main phone provider that we'd forward the ported number to?
I'm sure this is a common problem, so wondering what the best way approach it would be.
Thanks!
Twilio evangelist here.
If they want to continue using their POTS equipment then what you described is the only option. If they were able to move over to a pure VoIP system then there are more options.
You could use Twilio Client to build web and/or mobile VoIP apps for them. Or you could stand to a VoIP server (like Astrisk or FreeSWITCH) for them to connect VoIP phones to.
Of course they would still have to have an internet connection with for either of the VoIP options.
Hope that helps
This is an old question but it was at the top of my search for questions about porting for sms capabilities. Having worked 20 years in B2B telecom I can answer the last part of this in case anyone else needs to know.
If you go to any provider and request a number to be ported from the existing provider, the "losing carrier" cannot refuse to port the number as long as the number is active. I stress this point because if they are past-due, they still have to port it. But if the service is temporarily or permanently disconnected they don't and usually won't port it. The port has to come from the company winning the business. Don't contact the existing carrier about it because they can't "push" the number out. Instead, the new carrier will have you fill out a Letter of Authorization (LOA) to port it that gets submitted with the port request. Its very important that all of the details on this form match the billing record or it will get declined. So normally you would provide a copy of the current bill with the LOA.
I want to create a new plugin which will send live scores to the xmpp iOS client.
I have already created a new plugin and a service for it, but not getting any idea how to send live scores from openfire server to the xmpp iOS client.
Pls, suggest me something.
Thanks
One way would be to use multi chat. You can create a room for each match. Anyone who wishes to receive live score (or anything for that matter) joins the room. You have a bot that sends the score into the room and everybody who is in the room gets it. You can also configure the room so that it is visitors only and anonymous. See XEP-0045
Another way is the use pubsub. Again every match is a node. Users subscribe to the node. See XEP-0060
I'm not sure about others XMPP servers but IFAIK MUC and pubsub are supported by openfire.