C# Bot Builder Samples on GitHub

A good way to get ideas and some coding best practice is to look at some examples, there are many of them using C# hosted on GitHub here.

I wanted to walk through what they are so I can for myself find or discover some new ideas and best practices for this, as I am interested in creating a #chatbot like I discussed in these links

  • Create a Bot using an Azure App Service Bot Service
  • Most common chatbot questions and how to answer them
  • Publishing a chatbot using Bot Services and LUIS
  • How I tested / debugged my chatbot that I created using the Bot Services on Azure
  • How my chatbot remained statefull using Azure Bot Services
  • C# Bot Builder Samples on GitHub
  • Top 10 must have Phrase List Features for your chatbot or any bot LUIS
  • 1000 must have utterances for your chatbot using LUIS
  • Adding LUIS Entities to my chatbot
  • How I improved my chatbot

Some samples, the name and my description of them

Title Location Description
intelligence-SpeechToText SpeechToText Upload an audio (.wav) file and the audible words are converted to text and provided in a response
intelligence-SimilarProducts SimilarProducts Upload a picture of a blue shoe, another image of a similar blue shoe is returned
intelligence-LUIS LUIS Send text and the Intent of it is returned
intelligence-ImageCaption ImageCaption Upload a picture and the Computer Vision API will return some text describing the contents of the image
demo-Search Search An interface into Azure Search for navigating through large amounts of content
demo-ContosoFlowers ContosoFlowers Renders a Card as a welcome message, plus other examples of dialogs and other Card types
core-State State Useful for maintaining State which persists data relative to a user conversation
core-SendAttachment SendAttachment In the #chatbot interface the client can send the bot an attachment, useful with SpeechToText, ImageCaption, etc…
core-ReceiveAttachment ReceiveAttachment If the #chatbot needs to send an attachment back to the client like a .wav, .png, .gif, etc…
core-MultiDialogs MultiDialogs Dialogs are a conversation process, yes/no questions or selection dialog windows
core-GetConversationMembers GetConversationMembers Detecting when people join or leave a group conversation, so you can notify others and welcome them
core-DirectLine DirectLine Client to client direct communication, perhaps the way to get intelligent bots to speak with each other
core-CreateNewConversation CreateNewConversation Have a bot initiate the conversation with the client
core-ChannelData ChannelData Support for using channel specific capabilities like Skype, Facebook, Microsoft Teams, Slack, etc…
cards-RichCards RichCards Cards are pictures or emoticons, which are not attachments, with headings and descriptions
cards-CarouselCards CarouselCards Send multiple Cards with the left/right navigation arrows allowing client to scroll through

As I am wanting to create a #chatbot I think about the above capabilities and have these findings:

  • If the client uploads a picture of themselves I can use the age and sentiment APIs to learn more about them and make some funny answer, use SendAttachment as well
  • If a client uploads any picture use the ImageCaption to comment on it, use SendAttachment as well
  • If the client enters something that I do not recognize, ask if the client would like me to search the internet or some content, can use Search or SimilarProducts
  • If the client asks for a picture of the #chatbot use ReceiveAttachment to send the client one
  • Use LUIS as the basis for determining the intent of the conversation with the client

These are just some ideas on using some of these examples, perhaps every 100 or so transactions you can present a RichCards to advertise or CreateNewConversation to keep the client engaged and chatting.