2017-02-18 86 views

回答

2

由于“分享”按钮特定于Facebook,并且不是所有通道都共有,因此BotBuilder中没有用于执行此操作的代码。

然而,它可以通过使用ChannelDataC#)/ sourceEventNode.js)来实现。

请参阅this post以了解频道数据信息的外观。另外,this sample显示如何使用ChannelData功能。

最后,这里是关于ChannelData的文档。

+0

所有这些来源都知道给我,所以一般。为了改善您的响应,请提供一个使用C#中的ChannelData实现共享按钮的链接。作为回应会很有帮助。 – OmG

+0

我不记得在C#中实现Share按钮的示例,但它可以像从链接中的node.js示例获取代码一样简单,并将其移植到C#中...我目前没有带宽为你写代码;但是我提供的信息应该是非常直接的 –

+0

事实上,这在实践中并不简单!当你实现这个示例时,它会非常有帮助,可能会发现它不会直截了当! – OmG

2

捎带关闭的埃塞基耶尔通过提供的信息,

我已经创建了一个利用ChannelData财产超过透过Facebook Messenger发送一个分享按钮工作C#机器人。

随意check out the repo here.

Models目录包含了所有的类定义将充当合适的JSON格式的透过Facebook Messenger分享按钮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

请注意,如果您打算使用,您将需要填写在Web.config文件中自己的机器人应用程序ID和秘密项目。

+0

如果我想共享纯文本信息而不是卡片,我可以添加此任何想法? – PirateApp