PromptOptions dialog doesn't appear in embeded bot framework web chat - botframework

I have a bot framework v4 bot that prompts the user for a set of options using Microsoft.Bot.Builder.Dialogs.PromptOptions.
In Skype for business I see a list of options and I have to type back the chosen answer. In the "Test in Web Chat" section in Azure, I see buttons for the options as well as in the Bot Framework Emulator.
But when I use the iframe to embed the chat, if at the top of the conversation appears a welcome message and the bot icon, then the buttons don't display, neither the written options. But sometimes that Welcome message doesn't appear when the chat loads, and at that moment the buttons do appear.
The PromptOptions dialog is triggered by the first message of a user.

There are two versions of Web Chat you need to be aware of - Web Chat and Bot Chat. Bot Chat renders prompt options as a list while Web Chat creates buttons for each option. Currently, the iFrame renders a Bot Chat component, and the Emulator uses Web Chat which is why your prompt options are rendering as buttons in the Emulator and not in the iFrame.
The BotFramework development team is planning to upgrade the iFrame from Bot Chat to Web Chat in the next release, which should be relatively soon. You can either wait for the update or add Web Chat directly to your app.
For more information on embedding Web Chat in your site, take a look a the Web Chat Samples.

Related

Open a URL as a popup/Iframe in MS Teams

I have a Bot, as part of the conversation we will be sending a link on click of that need to open the page as a popup/in a Frame up on the MS Team window.
Bot is created using MS Bot framework.
You can do this using something called a "Task Module". Task Modules are basically framed popups inside Teams, and they can show either an Adaptive Card or a a web url, where you can host your own web content or even an iframe. As per the docs:
Task modules allow you to create modal popup experiences in your Teams application. Inside the popup you can run your own custom HTML/JavaScript code, show an -based widget such as a YouTube or Microsoft Stream video or display an Adaptive card. They are especially useful for initiating and completing tasks or displaying rich information like videos or Power BI dashboards. A popup experience is often more natural for users initiating and completing tasks compared to a tab or a conversation-based bot experience.

Is it possible to have a Weblink open up a chat in Teams

I want to have a link on a webpage open up a chat in teams with a chatbot. Is this possible to do? I doubt it would be possible to open up the local app, but maybe for the web app portion of teams? I tried just copy pasting the url when I was in the chat with the bot, but that didn't work for other people.
You could get the link to open a chat with the bot by clicking on the Microsoft Teams channel in the Bot Framework or Azure portal where you have created the bot. Here is an example:

How to use web chat interface of MS Botframework for DialogFlow bot

I have a dialogflow agent, it is currently integrated with slack. However I want to use the web chat interface provided by MS BotFramework.
I have tried to find but could not find any documentation for this.
Webchat channel is enabled by default and the way to see it is :
Open your bot in the Azure Portal and click Channels blade.
Click Edit for the Web Chat channel
Under Secret keys, click Show for the first key
Copy the Secret key and the Embed code.
Click Done
So the embed code is actually an iframe which you can place in your website or share with others who want to use your bot. Or you can use the src of the iFrame too to reach the bot directly.
In case webchat is disabled , you can enable it back by unchecking the disable checkbox in webchat.
To gain more in-depth understanding of webchat, as Nicolas mentioned, start having a look at https://github.com/Microsoft/BotFramework-WebChat

Passing an external user ID through MS Bot Framework

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.

Skype ChatBot Bubble - Different message colors

So I've been using MS Bot Framework to build some chatbots and I'm trying to integrate one of them with Skype.
The thing is, it seems that the "Skype Bubbles" don't support different color messages to distinguish between the user & the bot.
Even the default Skype bot has all messages in grey.
Is it possible to change this?
Thank you all.
Example of Skype's Test Bot Color Scheme
What you are looking at on the https://dev.skype.com website (aka Skype Dev Buddy bot) is actually the Skype Web Chat component. You can achieve some degree of customization using the chat control customization tool here.
If you would like full control over the styling of the chat control, you can fork and customize the Bot Framework official WebChat module (which is different than the Skype Web Chat (SWC).
For more information on customizing the Bot Framework WebChat component, see: Customizing WebChat > Styling
It seems that it's not possible to do that with Skype Web Control as #Nils W said.
One should use the Bot Framework WebChat Module.

Resources