2017-02-18 10 views

Antwort

2

Da die Share-Schaltfläche für Facebook spezifisch ist und nicht allen Kanälen gemeinsam ist, gibt es dafür keinen Code im BotBuilder.

Es kann jedoch erreicht werden, indem ChannelData()/sourceEvent (Node.js) verwendet wird.

Siehe this post als Referenz, wie die Kanaldateninfo aussehen soll. Außerdem zeigt this sample, wie die Funktion ChannelData verwendet wird.

Schließlich ist hier die Dokumentation um ChannelData.

+0

Alle diese Quellen sind mir bekannt und so allgemein. Um Ihre Antwort zu verbessern, geben Sie bitte einen Link an, der den Share-Button mit ChannelData in C# implementiert. Es wäre so hilfreich wie eine Antwort. – OmG

+0

Ich erinnere mich nicht an ein Beispiel, das die Share-Schaltfläche in C# implementiert, aber es wäre so einfach, wie den Code aus dem node.js-Beispiel in den Link zu nehmen und ihn nach C# zu portieren ... Ich habe die Bandbreite momentan nicht schreibe den Code für dich; aber mit den Informationen, die ich zur Verfügung gestellt habe, sollte wirklich geradlinig sein –

+0

In der Tat ist es nicht einfach in der Praxis! Wenn Sie das Beispiel implementieren, wäre es so hilfreich und könnte gefunden werden, dass es nicht einfach wäre! – OmG

2

aus den von Ezequiel bereitgestellten Informationen Huckepack,

ich eine Arbeits C# bietet erstellt habe, die die ChannelData Eigenschaft verwendet einen Share Button über Facebook Messenger zu senden.

Fühlen Sie sich frei zu check out the repo here.

Das Models Verzeichnis enthält alle Klassendefinitionen, die als richtige JSON-Format für ein Facebook Messenger Share Button handeln as is documented here.

Dann erstellen Sie einfach ein neues Objekt mit allen Ihren Modellklassen kombiniert und weist es die ChannelData Eigenschaft einer neuen Antwort in Ihrem Dialog wie folgt:

von 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); 
     } 
    } 
} 

, dass die gewünschte Ausgabe produzieren:

enter image description here

Bitte beachten Sie, dass Sie in Ihrem eigenen Bot App-ID und Geheimnis in der Datei Web.config müssen füllen, wenn Sie die verwenden möchten Projekt.

+0

Irgendwelche Ideen, wie ich das hinzufügen kann, wenn ich eine Klartextnachricht und keine Karte teilen möchte? – PirateApp

Verwandte Themen