Passing an external user ID through MS Bot Framework - botframework

I am working on a Skype bot, using Microsoft's Bot Framework.
I have an external website, where a user can create an account, obtaining a userID. I would like to have a button on my website that allows me to link their account to a Skype conversation.
The only way I can work it at the moment is by having the Skype bot ask for the user's email, then the user has to go onto the website and confirm that that was them on Skype. Not a good UX.
I know Telegram lets you do what I want with "deep linking", and Kik can do it by scanning QR codes. Facebook Messenger can do it by including the Facebook JSSDK in the page with a "Connect to this bot" button.
Is there any way to do this on Skype?

Use the "Sign-in Card" workflow to have your users authenticate with your website before proceeding with the Skype bot conversation.
The Sign-in card enables a bot to request that a user sign-in. It typically contains text and one or more buttons that the user can click to initiate the sign-in process.
For documentation and code example, see:
https://learn.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-add-rich-card-attachments#add-a-sign-in-card-to-a-message
Blog article showing sign-in card walk-through:
https://tsmatz.wordpress.com/2016/09/06/microsoft-bot-framework-bot-with-authentication-and-signin-login/
Additional code examples:
.NET SDK - https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/cards-RichCards#sign-in-card
Node.js SDK - https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/cards-RichCards#sign-in-card

Use individual deep link mechanism for each bot (e.g. telegram) that you wish to implement.
How to setup Telegram webhook the simple way.
Telegram webhook requirement
HOWEVER, it doesn't work on Skype.
Microsoft bot builder deep linking
he only way I can work it at the moment is by having the Skype bot ask for the user's email, then the user has to go onto the website and confirm that that was them on Skype. Not a good UX.
This is the only way so far for Skype.

Related

Teams channel in Azure Bot Service not working

I created an Azure Bot Service. When I test the service using "Test in Web Chat" it works as expected. When I add the Web Chat channel and use the Web Chat URL, it works as expected.
However, when I add the Microsoft Teams channel, it does not work as I expected. The Health Status shows "Healthy" (in "Channels (Preview)") and "Running" (in "Channels"). When I select "Open in Teams", I am redirected to Teams, but I do not see the bot as a user/bot I can chat with. I watched a video showing just that behavior as I was expecting, but the link only opens my Teams. I only have one other user in Teams and that user shows up. No sign of the bot. What am I missing?
I tried using the "Get bot embed codes". I put in the URL for the Mstreams href and instead of sending me to the bot user as I expected, I am redirected to the other user on the account (not the bot). What am I missing?
I've tried this using the "Channels" and the "Channels (Preview)" sections with the same results.
If relevant, I am still in the trial period with Azure and have not upgraded, but nothing says this should be an issue.
From all I can tell, I'm logging into the Azure portal and the Bot Framework portal with the same account as my Teams account. I'm using latest updated version of Chrome.
I don't think free account has anything to do with this. But the fact that the " bot embed codes" lead you to a different user, may be a configuration issue. Read Create a bot and Test and debug your Microsoft Teams bot in the Microsoft Teams documents for more information.
If you have successfully deployed to teams channel (teams channel registration), as per docs Copy the https part of the code that is shown in the Get bot embed code dialog.
For example, https://teams.microsoft.com/l/chat/0/0?users=28:b8a22302e-9303-4e54-b348-343232
In the browser, paste this address and then choose the Microsoft Teams app (client or web) that you use to add the bot to Teams. You should be able to see the bot listed as a contact that you can send messages to and receives messages from in Microsoft Teams.
Alternately, In-order to test them in teams you need to take the app id from the Configuration page of the bot.
Once you search with the app ID in teams you would be able to see this bot as a contact in Microsoft Teams.
Refer:
Create a Teams app package and upload your app to the Teams client for testing. Learn how
Publish your bot as a Line of Business app in your organization's Teams Tenant App Catalog. Learn how
Publish your bot as an app in the Teams App store. Learn how
I think I have found the answer, though I'm still trying to retrace my steps to make sure this is accurate. I will update here if I find anything more of value.
Despite little/no documentation to this effect, bots apparently do not work in the free version of Teams. You have to at least:
create a developer version of Microsoft O365 (E5 license) (and go through all the rigamarole to get it setup properly)
add at least one more user to the organization
then open Teams
Then, I used the embed URL to get the bot to show up. (Again, the same process did not work with my free Teams account even with another user added to it).
For the record, I didn't need to change any admin settings once the three items above were completed.

Facebook messenger bot cannot reply automatically to any other Facebook users instead of the admin

I have created a Facebook messenger chatbot, and is working perfectly with the admin, I mean the admin can interact with it without any issue, but all other users from Facebook can send it messages and the chatbot cannot respond to them automatically
You need to go through the app approval process.
Bots can no longer work without approval from Facebook.
You need to request specifically: pages_messaging and pages_messaging_subscriptions.
Good luck.

How to perform Graph auth without hosting my bot in Azure?

From my understanding, the OAuthPrompt requires a connection name. To create this, I need to make use of the Bot Channels Registration (as per the documentation). However, this seems to require me to create an Azure account and enter my payment card details. I would like to avoid entering my details if possible as I would not like to be charged for using any Azure services. Is there any way to avoid this?
If I must manually handle the OAuth process, I would like my sign-in to pop up in a small window like the "Allow" button triggers within the Who bot. I have tried SignIn cards which I have read just don't work in teams, and I have also tried OpenUrl type actions in a card which, when pressed, open the URL in my browser as opposed to a pop-up. How can I achieve this?
You can create a Bot Framework bot (only for Microsoft Teams) using the guidance here: https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bots-create. To summarize that article, you can use this endpoint to create a non-Azure bot: https://dev.botframework.com/bots/new
If you chose to use the Azure Bot Framework, you will not be charged for the Bot Framework if Microsoft Teams is your only channel (this does NOT include your web service if you chose to host your bot code on Azure, although you can chose a free tier to avoid any charges).
For authentication, see this section of the MS Teams documentation: https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/authentication/authentication. Depending on how you chose to implement your authentication, there are a few articles in that section that may apply. The OAuth card does work in Teams (not the free version, does not work with guest accounts, and only works for Azure bots).
For authentication, if you're redirecting to a different domain make sure you add it to the validDomains in your app manifest.

can't find published bot via Skype search

Question is not about programming, but stackoverflow.com is only community support resource mentioned at https://learn.microsoft.com/ru-ru/bot-framework/resources-links-help
I need to show a Skype bot to my boss, the way clients would see it. I created a new bot, published it, linked to out CRM, but can't find it via Skype bot search. It is listed in Bot Directory, i tried to disable and and re-enable publishing.
If I add it to Skype contacts via direct link from bot's profile page, it works just fine, sends and receives messages etc. I've waited for weeks in hope that bot search index just has been slow but no dice, bot still works but can't be found in Skype client. Other bots from directory can be found instantly. I tried at 5 different PCs. Status for Skype Publishing is Approved.
What can I do to get my bot to Skype search?
Skype bots are only searchable in the bot directory if they are "Featured" or otherwise highlighted by the Skype business team.
As you can see on the help page What Skype bots are available? - not all bots can be directly added via the directory. In the section What bots can be added directly that are not available in the Skype directory? you can see examples of non-directory bots which can only be added via web link.
For Bot Framework bots, the same scenario applies. Your bot will only be searchable in the Skype bot directory if it is published and is a "Featured" bot. Otherwise, the official way to add the bot is to share the "join" URL generated on the "Channels" page of the Bot Portal.
To view your bot's Skype "join" URL, go to the Channels page in the Bot Portal, right click on the "Skype" text and select "Copy Link Address".
Example Skype bot add-to-contacts "join" URL:
https://join.skype.com/bot/257389ac-afdb-473a-9b98-1234567890

How to add chat bot to the Skype contacts?? (for testing purpose)

I have created chat bot and integrated it to the Skype.
Its still under development. So I added contacts to with whom i'm testing it.
But When I click on Add to contacts, Its not getting added to their Skype. So I have to go to their machine, start their Skype and have to login to the bot framework on that machine and then it gets added to their Skype contact.
Is it defect? Or is this the only way to do it?
The Add to Skype link:
that you see in your dev.botframework.com portal does not require authentication. Just share that link with your test users and they will be able to add your bot to their skype contact list without you having to do anything,

Resources