c# - 如何将属性(特定于应用程序的数据)添加到 Twilio SMS - 2021
问题描述
我正在开发一个约会确认系统,我需要将 SMS 响应“Y”或“N”绑定到一些元数据,并通过 Twilio webhook 将该元数据发送到我的 API。
我正在使用来自 Twilio 的 .NET SDK 并尝试将属性添加到他们的文档所述的 SMS 消息(MessageResource)中:
属性:
- STRING PII MTL: 30 DAYS “存储应用程序特定数据的 JSON 字符串。如果尚未设置属性,则返回 {}。”
文档链接:https ://www.twilio.com/docs/chat/rest/message-resource#message-properties
这更像是我需要的元数据,但是当我尝试使用他们的 SDK 在我的 C# 代码中查找任何“属性”属性时,我找不到它。
这是我的代码:
var twilioMessage = MessageResource.Create(
body: msg,
from: _configuration["Twilio:FromPhoneNo"],
to: new PhoneNumber(phoneNumber),
attempt:1,
attributes: "{"id":"test"}" //this property doesn't work
);
var attributes = twilioMessage.attributes; //this doesn't work either
任何帮助将不胜感激。
解决方案
Twilio 开发人员布道者在这里。
恐怕您正在查看在那里发送 SMS 消息的错误文档。本文档用于发送聊天(应用到应用)消息。发送 SMS的文档在这里。
遗憾的是,SMS 消息无法将自定义属性绑定到它们。它只是协议中不存在的东西。
您正在发送预约确认并期待“Y”或“N”回复。我猜您正在尝试添加约会的 ID,以防您将多个约会的确认发送到同一个电话号码,并且您需要确定响应是关于哪个约会的。这里还有一个问题,作为最终用户,您无法回复特定的 SMS 消息。SMS 纯粹是按时间顺序排列的。
我可以想到 3 种方法来解决这个问题:
一次只发送一个确认。如果您仍在等待对确认的回复,请在收到回复之前不要再发送一封。如果用户不回复确认,这可能不起作用。
让用户在响应中包含约会的 ID。这是不稳定的,因为它依赖于用户把事情做好,而你想让事情变得尽可能简单
当您需要一次发送多个确认时,请使用不同的 Twilio 号码来发送确认。然后,您可以通过检查用户向其发送消息的 Twilio 号码将确认响应与约会联系起来。
3 号是这样做的最合理的方式。它不应该要求你有太多的额外号码,就像你可能有并发的预约确认一样多。
让我知道这是否有帮助。
推荐阅读
- python - 将复杂/扁平化的 JSON 转换为 DataFrame
- c# - 如何将占位符或 0 添加到 Blazor 日期
- node.js - 如何在 Firebase 云函数中进行 API 调用?
- java - 关闭 JFrame 后清空 ArrayList
- go - 去测试错误 - 没有测试文件 - GOPATH 中的错误
- odoo-11 - Odoo11 用自定义模块替换 sale.report_invoice_layouted 中的字段
- vue.js - VueJs - 使用数组中的数据创建所有周的卡片
- graphql - 第三方 API 的 Gatsby 插件抛出错误
- python - AttributeError:“列表”对象没有属性“dist”
- wcf - 如何在不指定 FaultContractAttribute 的情况下使用带有详细信息的 FaultException