c# - Bot Framework v4 加载 Facebook Webview
问题描述
我试图弄清楚如何让 MS Bot Framework v4 与 Facebook Web 视图一起工作。目前,整个互联网上没有任何关于如何使其工作的信息。有一些例子,比如这个,展示了它如何与 BF v3 一起工作。
我无法弄清楚这是如何与v4 中HeroCard
的 s 和s 一起工作的。CardAction
从文档看来,这种类型的功能需要一个ActionTypes
包含web_url
该枚举完全省略的值的值。BF v4 不支持建议此功能。
enableExtensions()
我目前正在将 Botman PHP Bot 移植到 MS Bot 框架,通过简单地调用按钮元素在 Botman 中执行此操作似乎非常简单。
我已经尝试了太多的方法来在这里列出,但当前的尝试看起来像这样:
var viewButton = new CardAction(
"web_url",
"View Details",
null,
"",
"",
"https://myurl",
JObject.FromObject(new { messenger_extensions = true }));
我已经完成了所有域白名单过程,所以我确信一切都准备好了,但是,我目前的尝试只是错误,因为 Favebook 似乎不喜欢 Bot Framework 正在生成的 JSON。
我也尝试过CardAction
像这样对类进行子类化:
public class WebViewCardAction : CardAction
{
public WebViewCardAction(string displayText, string url)
{
Type = "web_url";
Url = url;
Title = displayText;
MessengerExtensions = true;
WebviewHeightRatio = "compact";
}
[JsonProperty(PropertyName = "url")]
public string Url { get; set; }
[JsonProperty(PropertyName = "webview_height_ratio")]
public string WebviewHeightRatio { get; set; }
[JsonProperty(PropertyName = "messenger_extensions")]
public bool MessengerExtensions { get; set; }
}
在 Bot Framework 模拟器中查看 JSON 时,会产生如下 JSON:
{
"messenger_extensions": true,
"title": "View Details",
"type": "web_url",
"url": "https://myurl",
"webview_height_ratio": "compact"
}
这似乎与我在 FB messenger 示例中可以找到的内容一致。但是有了这个 FB 信使错误,甚至没有显示HeroCard
.
有没有人有这个工作?
网上有没有例子可以看?
解决方案
因为活动模式没有改变,所以您链接的示例也适用于 V4:
private async Task TestFacebookWebview(ITurnContext turnContext,
CancellationToken cancellationToken)
{
var reply = turnContext.Activity.CreateReply();
var attachment = new
{
type = "template",
payload = new
{
template_type = "button",
text = "Your is on it's way!",
buttons = new[]
{
new
{
type = "web_url",
url = "https://mybot.azurewebsites.net/",
title = "See on map",
webview_height_ratio = "compact",
messenger_extensions = true,
},
},
},
};
reply.ChannelData = JObject.FromObject(new { attachment });
await turnContext.SendActivityAsync(reply, cancellationToken);
}
如您所见,不需要英雄卡或卡牌动作。在此示例中,使用通过 传递的按钮模板调用Facebook webview,这是特定于频道的活动中的元数据。Messenger 读取该数据并为您创建看起来像卡片的东西。ChannelData
确保将您的域列入白名单以使其正常工作。
推荐阅读
- javascript - 以编程方式查找 chrome 中可用的最大可用缓存存储空间
- android - 应用程序设置允许通过移动网络下载?
- mysql - 将谷歌云存储连接到 mysql
- javascript - 添加和删除 VueJS 表单输入
- excel - 调试 Visual Basic 宏
- python - 如何在 python docx 中定位表格?
- python - 使用多处理池进行超参数调整
- amazon-web-services - 如何解决 s3-bucket-policy-grantee-check 不合规问题?
- reactjs - 关于使用 Mongoose/Elasticsearch 自动完成搜索栏的指南
- python - 基于另一个具有 NaN 值的数据框查找列的子集?