2017-02-18 37 views

ответ

2

Поскольку кнопка «Поделиться» относится только к Facebook и не является общей для всех каналов, для этого не существует кода в BotBuilder.

Однако его можно достичь, используя ChannelData (C#)/sourceEvent (Node.js).

См. this post как ссылку на информацию о данных канала. Кроме того, this sample показывает, как использовать функцию ChannelData.

И, наконец, вот документация около ChannelData.

+0

Все эти источники известны мне и так вообще. Чтобы улучшить ваш ответ, укажите ссылку, которая реализует кнопку совместного доступа, используя ChannelData в C#. Это было бы так полезно, как ответ. – OmG

+0

Я не помню пример реализации кнопки Share на C#, но было бы так же просто, как взять код из образца node.js в ссылке и поместить его на C# ... У меня нет полосы пропускания в настоящее время напишите код для вас; но с информацией, которую я предоставил, должно быть действительно неудобно –

+0

Действительно, на практике это не просто! Когда вы реализуете образец, это будет так полезно и может быть найдено, что это будет не просто! – OmG

2

Спекуляция от информации, предоставленной 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); 
     } 
    } 
} 

Это даст желаемый результат:

enter image description here

Пожалуйста, обратите внимание, что вам нужно будет заполнить свой собственный ID Bot App и Секрета в файле Web.config, если вы планируете использовать проект.

+0

Любые идеи о том, как я могу добавить это, если хочу поделиться простым текстовым сообщением, а не с картой? – PirateApp