WhatsAPP - MS团队整合通过Twilio



我想将WhatsApp业务整合到MS Teams。当我通过WhatsApp发送信息时,它会被Twilio接收。我在Teams和Twilio中也设置了webhook,但是Twilio无法将消息转发给Teams。

The Twilio give me a

11200 ERROR试图检索此URL的内容失败。

我检查了Teams的响应,并在body中发现了以下内容:

"通用传入webhook接收到错误的有效负载。">

我通过curl测试了webhook,我在Teams频道收到了文本。

这里是Twilio开发者布道者。

来自MS Teams文档(强调我的):

如果在任何通道中为团队启用了传入Webhooks,它将暴露HTTPS端点,该端点接受正确格式化的JSON并将消息插入该通道。

Twilio webhook是以application/x-www-form-urlencoded的格式发送的,所以你需要在中间做一些事情来将Twilio webhook重新格式化为MS Teams可以摄取的格式。

从快速搜索中,很难找到MS Teams实际期望的JSON的参考。本页有一些例子。

要重新格式化,您可以使用Twilio函数。像这样的代码可以很好地工作到Teams:

中的基本文本消息。
const got = require("got");
exports.handler = async function (context, event, callback) {
const teamsWebhookUrl = context.TEAMS_WEBHOOK_URL;
const teamsPayload = {
text: event.Body
};
try {
await got(teamsWebhookUrl, {
method: "POST",
body: JSON.stringify(teamsPayload),
headers: { 
"Content-Type": "application/json"
}
);
const response = new Twilio.twiml.MessagingResponse();
callback(null, response);
} catch(error) {
callback(error);
}
}

这是未经测试的,但想法是,它使用curl示例中的JSON构建一个简单的文本消息,并使用get将其发送到Teams的webhook URL。如果来自Teams的响应成功,那么将向原始Twilio webhook发送一个空响应。如果有一个错误,那么这个错误将被记录在Twilio调试器中。

要使用这些代码,你需要在依赖项中安装get,并在环境变量中添加Teams webhook URL。

最新更新