【问题标题】:Why does my Twilio MessagingResponse not work?为什么我的 Twilio MessagingResponse 不起作用?
【发布时间】:2022-11-02 23:38:45
【问题描述】:

以下 Twilio 代码不起作用。这是我在 ASP.NET (Core) 6.0 应用程序中的 webhook 处理程序。

[AllowAnonymous]
[HttpPost]
[Route("webhook-url")]
public IActionResult PostTwilioMessageReceived([FromForm] TwilioMessageReceivedFormModel formModel)
{
    // logging code etc.

    var response = new Twilio.TwiML.MessagingResponse();
    response.AddText($"You sent '{formModel.Body}' but our systems are dumb and can't process this yet.");
    
    return new TwiMLResult(response);
}

没有错误。我没有收到消息,而且我的传递状态 webhook 似乎没有被调用。

正如我在日志中看到的那样,上面的方法被调用。

注意 - 没有“收件人”地址。我已经改编了 Twilio 文档中的示例代码,该代码对于读取发件人地址或使用收件人或其他相关 ID 配置响应也没有任何作用。

https://www.twilio.com/docs/whatsapp/tutorial/send-and-receive-media-messages-whatsapp-csharp-aspnet#generate-twiml-in-your-application


我已经修改了我的日志记录,以确保我的 webhook 正在被调用。这是。在 Twilio 的日志中,没有确认我的 webhook 尝试产生的回复。

需要明确的是,上面的代码使用了 Twilio 的库。

【问题讨论】:

  • “我的交货状态 webhook 似乎没有被调用” - 你到底是什么意思?特别是因为“上面的方法被调用”?
  • 我有另一个 webhook,每当我发送消息时 Twilio 都会调用它。这不会被调用(日志中没有任何内容),这可能会确认 Twilio 正在丢弃或无法处理我的响应。

标签: c# asp.net-mvc twilio


【解决方案1】:

您的应用程序的 TwiML 输出将是:

<Response>You sent '...' but our systems are dumb and can't process this yet.</Response>

不幸的是,这不是有效的 TwiML,而是应该如下所示:

<Response>
   <Message>You sent '...' but our systems are dumb and can't process this yet.</Message>
</Response>

这将向发件人回复一条消息。为此,请使用.Message 方法而不是.AddText

response.Message($"You sent '{formModel.Body}' but our systems are dumb and can't process this yet.");

在您的代码 AFAIK 中,其他一切看起来都很好。


另外:如果您需要做的只是用一条消息回复当前发件人,您也可以用纯文本和text/plain 内容类型回复。

由 OP 编辑

我还将返回线更改为:

return this.TwiML(response);

这是 Twilio 支持的建议。我没有尝试我原来的方式,而是假设如果有某种魔法可以预先处理响应,或者以某种方式关联它,那么它可能是在基本控制器上使用辅助函数。谢谢。

【讨论】:

    【解决方案2】:

    如果没有看到错误或消息日志,很难说是什么原因造成的。您应该能够在控制台的“监视器”中看到一些东西(更多详细信息here)。

    过去我在使用 Node.js 时遇到过类似的问题,问题是我忘记将响应的内容类型设置为 text/xml。但我不确定您的 C# 代码中是否需要这样做。

    【讨论】:

    • 谢谢,那里什么都没有。就好像我什么都没回。我不希望设置内容类型,因为我使用 Twilio 的库来创建 MessagingResponse 并返回 TwiMLResult。我希望这能正常工作,或记录错误。事实上,我需要仔细检查我自己的日志以确保真正调用了钩子。
    • 似乎没有一个样本准备带有收件人地址的响应。我假设 Twilio 库会自动从请求中读取此信息。
    • 是的,“收件人”是可选的,如果没有另外指定,它使用发件人地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2018-03-05
    • 2013-04-19
    • 2015-10-17
    • 2016-02-20
    • 2023-04-03
    相关资源
    最近更新 更多