Microsoft Bot 与 Whatsapp 的集成
Microsoft Bot Integration with Whatsapp
我正在尝试将 Microsoft Bot Framework 与 WhatsApp 集成。
我已经有了与机器人服务对话的现有机器人(Skype 和网络聊天),并且正在尝试创建一个新的通信渠道。
如何构建这个新频道?
我已经有了可以从 WhatsApp 发送接收消息的 API,我计划在收到用户消息时连接我的机器人服务,但我不知道如何使用我的机器人服务它接受一个 class Activity
。
您可以尝试使用文档中所述的Direct Line!
You can enable your own client application to communicate with your
bot by using the Direct Line channel.
您可以尝试使用 Twilio Channel & then using the Twilio API for WhatsApp
我用的是直线频道。需要构建中继应用程序以在 whatsapp 和 Microsoft 直线之间进行连接。
有两种可能性 connect a bot to additional channels,使用自定义适配器和使用 DirectLine API。
我更喜欢使用适配器,因为您可以直接连接到 WhatsApp 服务,这提供了很大的灵活性。但是,在某些情况下,您可能会受益于使用连接到 Direct Line 的代理服务。
最后,您可以使用任何您喜欢的提供商,只要他们提供 API。例如 Twilio、RingCentral、InfoBip、LivePerson 等提供商。
我推荐的方法:自定义适配器
- Bot 直接连接到 WhatsApp 服务,使用 bot 中的额外端点
- 编写良好的适配器将所有 Bot Framework SDK 活动转换为 WhatsApp 服务,反之亦然。 (example).
- 同一个机器人项目可以使用多个适配器
- 适配器可以为通道提供特定的辅助函数,可从您的机器人项目中调用。 (example)
目前 BotBuilderCommunity 中提供了以下适用于 WhatsApp 的适配器。
- Twilio WhatsApp adapter (Javascript)
- RingCentral (WhatsApp) adapter (C#)
可以在 BotBuilderCommunity 上找到有关如何构建自定义适配器的示例。 (C#, Javascript)
替代方法:连接到 DirectLine 的代理服务
- DirectLine API 通过自托管代理服务与 WhatsApp 服务通信
- 代理服务可用于 C#/NodeJS/Python 机器人,而非特定语言
- 编写良好的代理服务将所有 Bot Framework SDK 活动转换为 WhatsApp 服务,反之亦然。
可以在此处找到有关如何构建代理服务的示例:C#, Javascript。
您可以使用 Twilio 频道并使用 Azure Functions 进行连接。
这是 Azure 函数的代码 -
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
{
var dataResponse = await req.Content.ReadAsStringAsync();
var values = dataResponse .Split('&')
.Select(value => value.Split('='))
.ToDictionary(pair => Uri.UnescapeDataString(pair[0]).Replace("+", " "),
pair => Uri.UnescapeDataString(pair[1]).Replace("+", " "));
var whatsAppMsg = values["Body"].ToString();
var qnaAnswer= await evaluateMessage(whatsAppMsg);
var response = new MessagingResponse().Message(qnaAnswer);
var twiml = response.ToString();
twiml = twiml.Replace("utf-16", "utf-8");
return new HttpResponseMessage
{
Content = new StringContent(twiml, Encoding.UTF8, "application/xml")
};
}
- 其中 evaluate 消息是 QnA Answer 的调用方法。它也可以是 LUIS 实现。
有关连接到 WhatsApp Bot 的 QnA maker 的更多信息 - Create WhatsApp Bot. Get the source code here。
我正在尝试将 Microsoft Bot Framework 与 WhatsApp 集成。
我已经有了与机器人服务对话的现有机器人(Skype 和网络聊天),并且正在尝试创建一个新的通信渠道。
如何构建这个新频道?
我已经有了可以从 WhatsApp 发送接收消息的 API,我计划在收到用户消息时连接我的机器人服务,但我不知道如何使用我的机器人服务它接受一个 class Activity
。
您可以尝试使用文档中所述的Direct Line!
You can enable your own client application to communicate with your bot by using the Direct Line channel.
您可以尝试使用 Twilio Channel & then using the Twilio API for WhatsApp
我用的是直线频道。需要构建中继应用程序以在 whatsapp 和 Microsoft 直线之间进行连接。
有两种可能性 connect a bot to additional channels,使用自定义适配器和使用 DirectLine API。
我更喜欢使用适配器,因为您可以直接连接到 WhatsApp 服务,这提供了很大的灵活性。但是,在某些情况下,您可能会受益于使用连接到 Direct Line 的代理服务。
最后,您可以使用任何您喜欢的提供商,只要他们提供 API。例如 Twilio、RingCentral、InfoBip、LivePerson 等提供商。
我推荐的方法:自定义适配器
- Bot 直接连接到 WhatsApp 服务,使用 bot 中的额外端点
- 编写良好的适配器将所有 Bot Framework SDK 活动转换为 WhatsApp 服务,反之亦然。 (example).
- 同一个机器人项目可以使用多个适配器
- 适配器可以为通道提供特定的辅助函数,可从您的机器人项目中调用。 (example)
目前 BotBuilderCommunity 中提供了以下适用于 WhatsApp 的适配器。
- Twilio WhatsApp adapter (Javascript)
- RingCentral (WhatsApp) adapter (C#)
可以在 BotBuilderCommunity 上找到有关如何构建自定义适配器的示例。 (C#, Javascript)
替代方法:连接到 DirectLine 的代理服务
- DirectLine API 通过自托管代理服务与 WhatsApp 服务通信
- 代理服务可用于 C#/NodeJS/Python 机器人,而非特定语言
- 编写良好的代理服务将所有 Bot Framework SDK 活动转换为 WhatsApp 服务,反之亦然。
可以在此处找到有关如何构建代理服务的示例:C#, Javascript。
您可以使用 Twilio 频道并使用 Azure Functions 进行连接。 这是 Azure 函数的代码 -
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
{
var dataResponse = await req.Content.ReadAsStringAsync();
var values = dataResponse .Split('&')
.Select(value => value.Split('='))
.ToDictionary(pair => Uri.UnescapeDataString(pair[0]).Replace("+", " "),
pair => Uri.UnescapeDataString(pair[1]).Replace("+", " "));
var whatsAppMsg = values["Body"].ToString();
var qnaAnswer= await evaluateMessage(whatsAppMsg);
var response = new MessagingResponse().Message(qnaAnswer);
var twiml = response.ToString();
twiml = twiml.Replace("utf-16", "utf-8");
return new HttpResponseMessage
{
Content = new StringContent(twiml, Encoding.UTF8, "application/xml")
};
}
- 其中 evaluate 消息是 QnA Answer 的调用方法。它也可以是 LUIS 实现。
有关连接到 WhatsApp Bot 的 QnA maker 的更多信息 - Create WhatsApp Bot. Get the source code here。