带有ChannelData空引用的BOT Framework 4新活动(&;Facebook Messenger) [英] Bot Framework 4 new Activity with ChannelData null reference & Facebook Messenger
本文介绍了带有ChannelData空引用的BOT Framework 4新活动(&;Facebook Messenger)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法在Facebook Messenger中显示该问题的任何按钮或图像。这太让人沮丧了。似乎什么都不管用,说明书,样品等等。看起来太过时了。这是我的代码。在其他渠道,我正在使用SuggestedActions来实现这一点。我基本上是在问一个是或否的问题。
var attachment = new
{
type = "template",
payload = new
{
template_type = "button",
text = "Please make a selection.",
buttons = new object[]
{
new
{
type = "postback",
title = "Yes",
payload = "Yes",
},
new
{
type = "postback",
title = "No",
payload = "No",
}
},
},
};
var reply = (turnContext.Activity as Activity).CreateReply();
reply.Type = ActivityTypes.Message;
reply.Text = "Does this work for you?";
reply.ChannelData = JObject.FromObject(new
{
notification_type = "REGULAR",
attachment
});
await turnContext.SendActivityAsync(reply);
当我尝试使用ChannelData发送时,收到Null引用异常。这发生在OnMessageActivityAsync内部。这是.Net Core 3.1应用程序。
更新%1
我刚刚将所有包从v4.11.1更新到v4.14.1。我仍收到Null引用异常。
更新2
这样用Message属性包装代码后,我不再获得Null引用异常。
https://developers.facebook.com/docs/messenger-platform/reference/templates/button
var message = new
{
attachment = new
{
type = "template",
payload = new
{
template_type = "button",
text = "Please make a selection.",
buttons = new object[]
{
//new
//{
// type = "web_url",
// url = "https://mybot.azurewebsites.net/",
// title = "Sign Up!"
//},
new
{
type = "postback",
title = "Yes",
payload = "Yes",
},
new
{
type = "postback",
title = "No",
payload = "No",
}
},
},
}
};
任何帮助都不胜感激!谢谢!
推荐答案
以下是工作解决方案。有关说明,请参阅更新3。
var recipient = new
{
id = turnContext.Activity.From.Id
};
var message = new
{
attachment = new
{
type = "template",
payload = new
{
template_type = "button",
text = "Please make a selection.",
buttons = new object[]
{
//new
//{
// type = "web_url",
// url = "https://mybot.azurewebsites.net/",
// title = "Sign Up!"
//},
new
{
type = "postback",
title = "Yes",
payload = "Yes",
},
new
{
type = "postback",
title = "No",
payload = "No",
}
},
},
}
};
var reply = (turnContext.Activity as Activity).CreateReply();
reply.Type = ActivityTypes.Message;
reply.Text = "Does this work for you?
reply.ChannelData = JObject.FromObject(new
{
recipient,
message
});
await turnContext.SendActivityAsync(reply, cancellationToken);
希望这能帮助其他人!
这篇关于带有ChannelData空引用的BOT Framework 4新活动(&;Facebook Messenger)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文