【发布时间】:2018-11-16 07:20:35
【问题描述】:
您确实需要能够在 facebook 发送原始 json 以利用所有 facebook messenger 功能,但我认为在 MS bot SDK 中无法做到这一点。 (第 4 版)。这是我认为应该有效的方法,但没有运气。如果我设置回复活动的 Text 属性,它只会在 messenger 上显示为文本(如预期的那样)。如果我使用字符串设置 ChannelData 属性,则不会引发异常,但 facebook messenger 不会显示响应消息。鉴于 FB Messenger 是一个多么庞大的平台,您会认为这是 SDK 中的优先事项,但我对此一无所知。
if (turnContext.Activity.Type == ActivityTypes.Message)
{
try
{
if((turnContext.Activity.ChannelId == Channel.Channels.Facebook)|| (turnContext.Activity.ChannelId == Channel.Channels.Emulator))
{
string rsp = "{\"attachment\":{\"type\":\"template\",\"payload\":{\"template_type\":\"button\",\"text\":\"What do you want to do next?\",\"buttons\":[" +
"{\"type\":\"web_url\",\"url\":\"https://www.messenger.com\",\"title\":\"Visit Messenger\"}]}}}";
Activity reply = turnContext.Activity.CreateReply();
_logger.LogInformation(rsp);
//reply.Text = rsp; // display message as actual message to messenger
// reply.ChannelData = rsp; // fails request finishes on the MS bot service side, but nothing at all shows on messenger
reply.ChannelData = JsonConvert.DeserializeObject(rsp); // WORKS!
await turnContext.SendActivityAsync(reply);
.... // 在我的原始帖子中,JSON 字符串中有一个错误,一分钟后我得到了完整的答案...请参阅下面的答案。
【问题讨论】:
标签: c# botframework facebook-messenger-bot