Bot Info SDK:C# 活动通道:SMS (Twilio) Bot 版本:v4.4.3
问题描述:我希望能够通过 SMS 消息发送主动消息。当用户的帐户被锁定时,我有那个人的电话号码,我想发送一条通知消息,例如“您的帐户被锁定,请做点什么”。这可能吗?我查看了有关主动消息的文档,即通过“活动”获取“ConversationReference”,我不知道电话号码,我可以创建一个“ConversationReference”对象,以及如何通过通知告诉机器人电话号码控制器。
谢谢你。
Bot Info SDK:C# 活动通道:SMS (Twilio) Bot 版本:v4.4.3
问题描述:我希望能够通过 SMS 消息发送主动消息。当用户的帐户被锁定时,我有那个人的电话号码,我想发送一条通知消息,例如“您的帐户被锁定,请做点什么”。这可能吗?我查看了有关主动消息的文档,即通过“活动”获取“ConversationReference”,我不知道电话号码,我可以创建一个“ConversationReference”对象,以及如何通过通知告诉机器人电话号码控制器。
谢谢你。
Twilio 开发人员布道者在这里。
如果您还没有来自先前对话的对话参考,那么文档似乎不清楚您将如何开始对话。在这种情况下,直接使用 Twilio API 向用户发送 SMS 消息可能更容易。
幸运的是,与大多数渠道不同,您可以构建对话参考,而无需让用户首先向机器人发送消息,因为您知道用户的号码并且您拥有机器人的号码。看看下面的代码片段。您可以通过向电话号码发送获取请求来向电话号码发送主动消息http://localhost:3978/api/notify/+1##########
using Microsoft.Bot.Connector.Authentication;
[HttpGet("{number}")]
public async Task<IActionResult> Get(string number)
{
MicrosoftAppCredentials.TrustServiceUrl("https://sms.botframework.com/");
var conversationReference = new ConversationReference {
User = new ChannelAccount { Id = number },
Bot = new ChannelAccount { Id = "<BOT_NUMBER>" },
Conversation = new ConversationAccount { Id = number },
ServiceUrl = "https://sms.botframework.com/"
};
await ((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, BotCallback, default(CancellationToken));
// Let the caller know proactive messages have been sent
return new ContentResult()
{
Content = "<html><body><h1>Proactive messages have been sent.</h1></body></html>",
ContentType = "text/html",
StatusCode = (int)HttpStatusCode.OK,
};
}
private async Task BotCallback(ITurnContext turnContext, CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync("proactive hello");
}
有关发送主动消息的更多详细信息,请查看Proactive Message 示例。
希望这可以帮助。