Microsoft Bot Integration with Whatsapp

user1393503 picture user1393503 · Aug 31, 2018 · Viewed 10.7k times · Source

I am trying to integrate Microsoft Bot Framework with WhatsApp.

I already have existing bots (skype and webchat) that talk to the bot service and was trying to create a new channel for communication.

How can I construct this new channel?

I already have APIs in place that can send an receive messages from WhatsApp, I plan to hook my bot service when I receive a message from a user, but I can't figure out how to use my bot service as it accepts an a class Activity.

Answer

Mick picture Mick · Apr 6, 2020

There are a two possibilities to connect a bot to additional channels, using a custom adapter and using the DirectLine API.

My preference would be to use an adapter, since you will have a direct connection to the WhatsApp service which offers a lot of flexibility. However in some scenarios you could benefit from using a proxy service connected to the Direct Line.

In the end, you could use any provider you like, as long as they offer an API. For example providers like Twilio, RingCentral, InfoBip, LivePerson.

My recommended approach: Custom Adapter

  • Bot has a direct connection to the WhatsApp service, using an extra endpoint in the bot
  • Well written adapters transform all Bot Framework SDK activities to the WhatsApp service, and vice versa. (example).
  • Multiple adapters could be used with the same bot project
  • Adapters could offer specific helper functions for the channel, callable from your bot project. (example)

Currently the following adapters for WhatsApp are available in the BotBuilderCommunity.

Examples of how to build a custom adapter can be found on the BotBuilderCommunity. (C#, Javascript)


Alternative approach: Proxy service connected to DirectLine

  • DirectLine API communicates via a self-hosted proxy service to the WhatsApp service
  • Proxy service could be used for C#/NodeJS/Python bots, not language specific
  • Well written proxy services transform all Bot Framework SDK activities to the WhatsApp service, and vice versa.

Example of how to build a proxy service can be found here: C#, Javascript.