Можно ли создать кнопку CardAction (кнопка) в ботфрейме, которая работает в качестве кнопки обмена в Facebook Messenger?Кнопка Share В Facebook Messenger
ответ
Поскольку кнопка «Поделиться» относится только к Facebook и не является общей для всех каналов, для этого не существует кода в BotBuilder.
Однако его можно достичь, используя ChannelData
(C#
)/sourceEvent
(Node.js
).
См. this post как ссылку на информацию о данных канала. Кроме того, this sample показывает, как использовать функцию ChannelData
.
И, наконец, вот документация около ChannelData.
Спекуляция от информации, предоставленной EZEQUIEL,
Я создал рабочую C# бот, который использует ChannelData
свойство отправить Share Button через Facebook Messenger.
Смело check out the repo here.
Каталог Models
содержит все определения классов, которые будут действовать в нужном формате JSON для Facebook Посланника Share Button as is documented here.
Тогда вы просто создать новый объект, используя все ваши в сочетании классов модели и присвоить его свойству ChannelData
нового ответа в вашем диалоге так:
от ShareButtonDialog.cs
:
namespace Azure_Bot_Generic_CSharp
{
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Microsoft.Bot.Connector;
using Microsoft.Bot.Builder.Dialogs;
using Models;
[Serializable]
public class ShareButtonDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(this.MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
//create a reply message
var reply = context.MakeMessage();
//create a channel data object to act as a facebook share button
reply.ChannelData = new FacebookChannelData()
{
Attachment = new FacebookAttachment()
{
Payload = new FacebookGenericTemplate()
{
Elements = new object[]
{
new FacebookGenericTemplateContent()
{
Buttons = new[]
{
new FacebookShareButton()
}
}
}
}
}
};
//send message
await context.PostAsync(reply);
var reply2 = context.MakeMessage();
reply2.Text = "This is a message after the Share Button template.";
await context.PostAsync(reply2);
//wait for more messages to be sent here
context.Wait(MessageReceivedAsync);
}
}
}
Это даст желаемый результат:
Пожалуйста, обратите внимание, что вам нужно будет заполнить свой собственный ID Bot App и Секрета в файле Web.config, если вы планируете использовать проект.
Любые идеи о том, как я могу добавить это, если хочу поделиться простым текстовым сообщением, а не с картой? – PirateApp
Все эти источники известны мне и так вообще. Чтобы улучшить ваш ответ, укажите ссылку, которая реализует кнопку совместного доступа, используя ChannelData в C#. Это было бы так полезно, как ответ. – OmG
Я не помню пример реализации кнопки Share на C#, но было бы так же просто, как взять код из образца node.js в ссылке и поместить его на C# ... У меня нет полосы пропускания в настоящее время напишите код для вас; но с информацией, которую я предоставил, должно быть действительно неудобно –
Действительно, на практике это не просто! Когда вы реализуете образец, это будет так полезно и может быть найдено, что это будет не просто! – OmG