我正在尝试弄清楚如何使MS Bot Framework v4与Facebook Web View一起使用。目前,整个互联网上没有任何有关如何使它正常工作的信息。 like this one有一些示例,展示了它如何与BF v3一起使用。
我不知道它如何与v4中的HeroCard
和CardAction
s一起工作。
从文档中看来,此类型的功能将需要一个ActionTypes
,其中包含一个web_url
的值,该值被枚举完全忽略了。提示BF v4不支持此功能。
我目前正在将Botman PHP Bot移植到MS Bot Framework,似乎在Botman中通过简单地在按钮元素上调用enableExtensions()
来做到这一点非常简单。
我尝试了太多的方法在此处列出,但是当前的尝试看起来像这样:
var viewButton = new CardAction(
"web_url",
"View Details",
null,
"",
"",
"https://myurl",
JObject.FromObject(new { messenger_extensions = true }));
我已经完成了所有域白名单处理,因此我确定一切都准备就绪。但是,由于我目前的尝试,Messenger只是报错,因为Favebook似乎不喜欢Bot Framework正在生成的JSON。< / p>
我还尝试过像这样对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 Messenger错误甚至没有显示HeroCard
。
有人能做到这一点吗?
网上有什么例子可以看吗?
答案 0 :(得分:1)
由于活动架构未更改,因此链接的示例在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);
}
如您所见,不需要英雄卡或卡动作。在此示例中,使用通过ChannelData
传递的webview来调用Facebook button template,var shell = require('shelljs');
shell.exec('git clone http://mybitbuck.et/scm/myproject/myrepo.git');
是活动中特定于该频道的元数据。 Messenger会读取该数据并为您创建看起来像卡的东西。
请确保您whitelist your domain才能正常工作。