2017-05-15 11 views
1

私はボットにアクセスするためのリンク上でFacebookのユーザーベースのデータをいくつか初期化したいと思います。私はこの記事を見つけました: https://developers.facebook.com/docs/messenger-platform/referral-params しかし、私はボットフレームワーク(C#)から参照パラメータを取得する方法を知らない。 https://m.me/ {BOT_ID}?ref = {SOME_MESSAGE}Facebookのメッセンジャーから紹介パラメータを取得するにはどうすればいいですか?ボットフレームワークC#

私の目的は、このようなリンク上でユーザーデータベースを設定することです。私は首尾よく同じことをしようとした

おかげ

答えて

1

(また、私の解決策を共有するためにgithubの上の問題追跡した後、ここで返信)

。最初 奇妙なポイント:あなたは以前にボットに話したりない場合は、値が同じ場所にいないことに注意してください...

だから私は、次のことをやっている:

FacebookChannelDataクラスを定義し
  • public class FacebookChannelData 
    { 
        [JsonProperty("Sender")] 
        public Sender Sender { get; set; } 
    
        [JsonProperty("Recipient")] 
        public Recipient Recipient { get; set; } 
    
        [JsonProperty("Timestamp")] 
        public long Timestamp { get; set; } 
    
        [JsonProperty("Postback")] 
        public Postback Postback { get; set; } 
    
        [JsonProperty("Referral")] 
        public Referral Referral { get; set; } 
    
        public string RefParameter 
        { 
         get 
         { 
          string val = ""; 
    
          if (Postback != null && Postback.Referral != null && !String.IsNullOrWhiteSpace(Postback.Referral.Reference)) 
          { 
           val = Postback.Referral.Reference; 
          } 
          else if (Referral != null && !String.IsNullOrWhiteSpace(Referral.Reference)) 
          { 
           val = Referral.Reference; 
          } 
          return val; 
         } 
        } 
    } 
    
    public class Recipient 
    { 
        [JsonProperty("Id")] 
        public string Id { get; set; } 
        [JsonProperty("Name")] 
        public string Name { get; set; } 
    } 
    
    public class Sender 
    { 
        [JsonProperty("Id")] 
        public string Id { get; set; } 
    
        [JsonProperty("Name")] 
        public string Name { get; set; } 
    } 
    
    public class Postback 
    { 
        [JsonProperty("Payload")] 
        public string Payload { get; set; } 
    
        [JsonProperty("Referral")] 
        public Referral Referral { get; set; } 
    } 
    
        public class Referral 
        { 
         [JsonProperty("Ref")] 
         public string Reference { get; set; } 
    
         [JsonProperty("Source")] 
         public string Source { get; set; } 
    
         [JsonProperty("Type")] 
         public string Type { get; set; } 
    } 
    
    :RefParameterは、あなたがしたいパラメータは、JSONメッセージからこれらのフィールドを取得するために

コードを受信した場合

  • ので、Facebookの着信メッセージのChannelDataが似ている取得:

コード:あなたが見ることができるように

if (incomingMessage.TryGetChannelData(out FacebookChannelData channelDataInfo)) 
{ 
    return channelDataInfo.RefParameter; 
} 
else 
{ 
    return String.Empty; 
} 

、興味深い値は、フィールド "Postback.Referral.Reference" OR "このチャンネルデータ内の「Referral.Reference」(新しい会話であるという事実を考慮して)、最初のものがnullであり、その場合2番目のものを取得しようとしています

希望する役に立った

PS:Messengerボットの設定に[スタート]ボタンを設定することを忘れないでください。

+1

その返信が役に立った場合は、お手数では、お手数ですが –

+0

このソリューションを提供いただきありがとうございます。それは私にかなり頭痛を救った – SirDerpington

関連する問題