Dynamics Omnichannel different distribution method - dynamics-crm

Can we have a different work distribution method (push - pick) for different queues in the same workstream? For example, I would like in the Facebook workstream to have the default messaging queue with push method and another queue where the agent can transfer the chats for someone else (or myself) to pick them later.

As of now, dynamics omnichannel supports work distribution only at workstream level.

Related

1-to-n user-agent Communication in Bot Framework

I have implemented the "tompaana" solution for bot-agent-handoff (1 to 1 conversation), but how can I establish a "1 to n" scenario (i.e. one agent handling multiple users after bot escalation)?
I have implemented as per the link given below :
Referred link : https://github.com/tompaana/intermediator-bot-sample.
The way I have implemented it was using back channel in the directline api. When agent connects pass the agent details as well as session details with the "start conversation". However any mechanism that stores conversation reference of specific chat with the session would work
https://github.com/microsoft/BotFramework-WebChat/tree/master/samples/04.api/b.piggyback-on-outgoing-activities
For the intermediate-bot-sample, here is a comment by #tompanna with regards to a call center support scenario issue:
I think the best bet to implement a call center, given that one want to use the message router, is to take the message routing component source and customize it based on one's needs. LiveEngage is one that has routing capabilities out-of-the-box, but can be enhanced with custom code. I have implemented a simple connector for LivePerson service (Node.js). Ibex Dashboard is another OSS project by Microsoft containing enablers for this kind of a scenario (but does not do the job out-of-the-box).
You can take a look at the BotFramework HandOff experimental sample. Also, there is a Node sample by TDurnford where you can message #list to get a list of users waiting to talk to an agent in the queue, and message #connect to connect to the user waiting at the top of the queue.
Hope this helps.

Integrating a multi-calendar solution with Microsoft Exchange/Outlook

I have built a platform that in essence allows users:
to create a company profile and invite your colleagues,
create an office with a floor plan,
add tables and meeting rooms to the floor plan with each meeting room having a separate calendar,
book tables and meetings in meeting rooms.
The platform is built on Python/Django.
Now I am trying to implement a sync mechanism that would work with Office 365 and local Exchange distributions. The sync would be two way, that means an event created in Outlook would trigger an event to be created in our system and vice versa.
My first attempt was to use the EWS SOAP API (with exchangelib). But soon I've run into problems when figuring out how to create triggers for Outlook events. This ended in failure as synchronization would involve constant bombing of slow API-calls such as iterating through accounts and checking if anything changed in their calendars.
Second attempt involved using the Microsoft Graph API that has this neat push notification feature that would solve polling (or so I thought). But as I later found out, having the administrator link his privileged Exchange account and then being able to subscribe event changes for all associated accounts in one go was not possible (thanks to this article). So again this lead to the realization that polling (or making everyone link their personal accounts) was the only way to go.
What approach would you recommend to achieve two-way sync with Exchange that would involve only having the admin do the account linking with as little overhead and polling as possible?
Is there anyone who have developed large-scale applications that do something similar? If so, can you push me in the right direction?
A bit late to the game here, but maybe what you want is the EWS SubscribeToPushNotifications service. It's not implemented in exchangelib yet, but there's a ticket for it https://github.com/ecederstrand/exchangelib/issues/145
Implementing the basics should not be difficult.

How to build real time notifications in a distributed project?

I wonder to know which technique and tools I should use to have the ability to send real time notifications to users. Specifically if I build a messaging system.
I can see that modern social networks can send notifications about new messages almost immediately. Even when the user 'A' from one country writes a message to the user 'B' in another country you can see that the user 'A' writes a message and you immediately see it (even if those users live in different continents).
I tried to figure out how it is possible and find any information about this but without success.
The only thing I found out is the technique when we use a Redis or RabbitMQ server with several servers which acts like publishers and subscribers. Our API servers receive new messages then they push a new message in the queue then subscribers receives the messages and if they have an open WebSocket with the recipient they push this message in the WebSocket and a client receives the message.
But it really won't work if you have a distributed project and your clients are connected to the nearest servers in the nearest data center.
The question is: what technologies/techniques/anything we should use to be able to build notifications in a distributed project?
If you develop your distributed app/system using web technologies, you can consider building what is referred to as a Progressive Web App. With PWAs you can add push notifications in a relatively easy way. You could start with a PWA approach, and then decide later on if developing a native app as well (i.e. iOS or Android) would be necessary.
There are many resources to learn and guide you in developing progressive web apps. Check the references I mentioned above, and you can do this codelab as a starting point.

Exchange Server Global Events

I'm looking to mirror contacts added to exchange in a separate system. I'd like to do this as contacts are added if possible.
I've seen some listeners available in the API I can use, but those look like they're on a user basis. To use them I think I'd have to have an instance open for every user and I believe they also only remain open for 30 minutes.
Is there anyway to get a notification whenever any user adds a contact to exchange?
No there is no such thing as global events in Exchange (not since 2007 anyway) the closest would be Transport agents but these are only useful for items that are traversing the Transport Pipeline. The application your developing will need to deal with things on a Mailbox by Mailbox basis.
Cheers
Glen

How would you implement instant messaging on Windows Azure

Hi we are thinking to implement a chat feature in our web app. (MVC 3 running on Azure) like Facebook or Gmail applications.
So the idea about this question is to have your technical architecture opinion about it.
How would you design it and which services you would use (worker role, queue, blob, Sql azure etc.).
Thanks
Instant Messaging is about asynchronous delivery of messages between multiple publishers and subscribers. This sounds like a perfect recipe for Azure Queues.
If the number of users who will use this feature is small, you can create a queue per recipient. Web-app would drop a message onto the recipient's queue and would check queue of its own user.
The positive about this approach is its simplicity The downside of this approach is the frequency of checking the queues per user and the cost associated with that.
If you have 10,000 users logged into IM and the app is checking their queue's once per second, that's 1penny per second. Which translates to ~$26k/month.
Windows Azure Service Bus provides Publish-Subscribe messaging with Topics that can be used for this scenario. You can see a Silverlight based Chat sample for this: http://servicebus.codeplex.com/SourceControl/changeset/view/9715
In addition you can see a Multi-tier app sample that shows using Service Bus Topics/Subscriptions from Web/Worker roles here: http://code.msdn.microsoft.com/windowsazure/Multi-Tier-application-6c033cad

Resources