Slack Outgoing Webhook to Incoming Webhook in MS Teams - slack

I'm trying to connect a Slack channel to Teams and to forward all messages to teams. I thought it would be as easy as using an outgoing webhook in Slack and and incoming webhook in Teams. However nothing is ever sent to Teams. Is this even possible without the use of some automation tool like Zapier or IFTTT?

I think there are probably a bunch of reasons this is not working - I can imagine there could be authentication issues, and also that the structure of the data coming from slack is unlikely to be what Teams can consume 100% as is. Basically, you're going to need some kind of intermediary, like perhaps an Azure Function or AWS Lambda (unless Zapier/IFTTT can offer something out of the box for this). Power Automate could be another option, incidentally.
As another option, you could look to a 3rd party that does something like this already, like m.io (Disclaimer: I have no affiliation with them, or even experience with their platform, I'm just aware of the existence of their tool).
With regards docs, have a look at Outgoing Webhooks for Slack and Incoming Webhooks for Teams. Even from the docs, you can see the format/structure is very different, so it's just a case of a small Cloud function to map input <-> output.

Related

How to deploy a Question Answering BERT Model as a chat bot on MS Teams

I have a Text2SQL model (EditSQL: https://github.com/ryanzhumich/editsql) which I have configured to take a sentence as input and return a SQL query as output.
Now, I want to deploy this program as a chat bot application in Microsoft Teams.
I understand there's Microsoft bot framework that enables publishing a bot and the 3 options are described here.
https://learn.microsoft.com/en-us/learn/modules/choose-bot-building-tool/
However, I am not finding any of them suitable for my use case since I need to deploy a Question-Answering Bot where the Questions from users need to be sent to an external server like AWS and the response from AWS (could be an excel file) needs to be sent back to the user. Multiple questions can be the part of a conversation, so the chat client should be able to mark start and end of a conversation.
My problem:
What are the basic steps of exposing a ml model via a server so that it can be queried in production.
What are the tools that will allow me to make a client on Teams and a server for this model on AWS?
Please let me know if I should add more information on this.
Thanks
As you've seen, there are a bunch of tools/approaches to creating bots in the Microsoft world, for Teams or otherwise. Underneath, these all use the Bot Framework, but you can develop directly (i.e. write code), or use a higher-level tool like Bot Framework Composer - the choice is yours depending on your own internal skills. If you want to work with code directly, here are a bunch of bot samples, in multiple languages: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples . For isntance, here is an example of integrating the Microsoft QnAMaker service into your bot: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/49.qnamaker-all-features
Basically, if you go the development approach, your bot is just a web service. Once it receives the message, it can call out to any other service behind the scenes. That means it can receive a message, call out to an AWS service, receive the response, and send a reply to the user.
For multiple questions as part of a 'set' of chats, Bot Framework provides an idea called "dialogs" that should work for you.

Chatbot handoff from Messenger to Zendesk

I am developing a customer service chatbot, using Azure's Bot Framework in .NET, using the the Messenger channel. I wanted to know if anyone knows what the best way to handle the handoff to a human on Zendesk (which my platform already uses as its CRM platform). I'm not looking for when to do the handoff, but how to manage what happens next.
What I would love to be able to do would be that so when handoff is needed, a ticket on Zendesk would be created, sending for example a file (the transcript of the conversation so far). Then the agent would be able to solve the customer's problem in that ticket, having a conversation with him, having the bot sending messages back and forth between zendesk and messenger.
I don't know if this has been done before, or if it's at all possible. And I'm free to other solutions to the problem of handling this kind of handoff, without having to create a separate "chat" for the customer service agents to use, like it's explained on the azure documentation.
Thank you for your patience while I researched this. I found this resource that I believe will meet your needs. This functionality is built off of the Bot Framework utilizing .NET (it's also available for Nodejs). There are two available methods to connect a client to an agent.
The first (which should apply to you) aggregates different channels into one allowing an agent to pickup in the same channel where the bot handed off. The second opens a new channel when an agent joins the conversation.
Intermediator Bot
I was able to spin up a bot using this and confirmed the bot was listening for outside traffic.
Hope this helps.
Steve.
One thing that I'm about to try is this:
Bot conversation ends.
Bot service calls an Azure Function, passing the conversation content.
The Azure Function integrates with Trello API, creating an entry on a Kanban board.
So, instead of Trello as I want to do, you can make a call to the Zendesk API.
I'm writing a few articles about developing Azure bots. The next two actually are dealing with these very things. You can find out more here. sign up if you'd like to get notified over the next week or so when the new tutorials are online.
Hope that helps!
Tim

Real time conversation tracking in Microsoft Teams

Teams stores channel conversations in a hidden folder in an Office 365 group. I’m looking for a programmatic way for us to access/log all of that data in as near real time as possible. I've looked at going through Exchange, the eDiscovery API and also the Graph API and I can't find any way of doing this.
If this is something a bot could do that’d be best, but I don’t think bots can actually follow channel conversations. They only seem to be called when they are # mentioned.
After a lot of looking around and playing with APIs, it looks like the best way to do this kind of thing is going via the Microsoft Exchange API.
https://github.com/OfficeDev/ews-managed-api
There are 2 different things I'm using this for- one is just regular archiving of channel information and private messages. The EWS API makes this not too challenging. The other is to give a bot insight into a conversation preceding it being mentioned. This is a little slow, can take up to a minute from the original message being input into Teams.
I really wish this was a part of Teams to begin with, and clearly I am not alone: https://microsoftteams.uservoice.com/forums/555103-public/suggestions/16940815-ability-to-archive-channels-and-chats
You have to be careful not to be too aggressive as you can get throttled.

Responding to incoming SMS

I am new to Twilio and tasked with evaluating whether to switch from our current service which is CDyne.
We have an application that uses SMS to interact with clients on behalf of staff using two-way SMS. The app automatically launches SMSs at certain trigger events and based upon the responses from clients decides what to do next - including asking further questions of the client. The SMS gateway I use currently allows me to include a reference id in outgoing messages. This id is returned when someone replies to the message. This makes it dead easy to look up everything related to the incoming message and form a decision and reply. Twilio does not seem to have anything similar. In fact, it does not even return the SMS ID of the original message which seems to make it a pain to determine the relation. I understand you could potentially look up the FROM and TO and trace it back, but with multiple phone numbers being used for the same client (staff can send messages directly too using a different phone number and there are several numbers being used for mass text messages), this is potentially (very) hazardous.
Question 1: Is there any (good) solution to this issue in Twilio, and
Question 2: If not, why not??? (It seems pretty obvious and simple to include a reference to the initiating SMS in the reply)
This is one of the many features that CDYNE offers at no cost to their customers.
To my knowledge, Twilio doesn't offer this feature.
For additional information on SMS Notify!'s additional free features, check out CDYNE's wiki.

SMS alerting to respond to error situations faster

What is the easiest way to set up an SMS alerting system so that I will receive notification if my server doesn't respond or a GET query doesn't return correct content?
You can completely outsource the monitoring and alerting, for example by subscribing to Pingdom. The most basic Pingdom plan will monitor up to 5 services (including using HTTP GETs with optional content pattern matching) and send an SMS after a configurable amount of downtime.
If you want to roll your own solution, the first thing to get right is the monitoring software. Many, many third party solutions exist for this, from the free to the outrageously expensive. Of course, rolling your own "try a GET and do something if it doesn't work" script is always an option, but as with all software, feature creep may mean that you're just re-implementing existing solutions soon...
For the SMS notification, using an e-mail-to-SMS gateway might work for you, if you're in a territory well-served by such services. Most US providers, for example, provide free gateways, whereas in Europe they tend to be run by third parties and pay-only. As already suggested, Google is your friend here. Also, your monitoring tool may support sending notifications directly using a cellphone/GSM modem attached to the monitoring server.
Often I've found that what you need is a SMS modem attached directly to your monitoring server. What if the problem is the network connection?
What you want is an SMS gateway. There are surely some service providers local to you. Unfortunately, they are a bit hard to find. Try asking Google...
You can get a service like http://www.serviceuptime.com/ and the send an email to your-number#a-domain-your-provider-gives They usually have the exact domains for the providers on their respective websites but you could just try #t-mobile.com if your provider is t-mobile for example.
If you want to write your own tool should be pretty straightforward - send GET request if you dont get the expected response send email. You should run it from 2 different locations from 2 different ISPs tho because if there are routing problems and the request doesnt go through you'll get smsed

Resources