簡體   English   中英

我如何從Facebook Messenger Bot Framework C#獲取引薦參數

[英]How can I get Referral params from facebook messenger Bot Framework C#

我想根據他們用來訪問我的機器人的鏈接為Facebook用戶初始化一些數據。 我找到了這篇文章: https : //developers.facebook.com/docs/messenger-platform/referral-params,但是我不知道如何從bot框架(C#)中獲得引用參數。 我的目的是在這樣的鏈接上設置用戶數據庫: https ://m.me/ {BOT_ID}?ref = {SOME_MESSAGE}

任何幫助將不勝感激。

謝謝

(也在github上的問題跟蹤器之后在此處回復,以分享我的解決方案)

我成功地嘗試了。 首先怪異點:請注意,如果您之前與機器人聊天,則該值不在同一位置...

因此,我正在執行以下操作:

  • 定義了一個FacebookChannelData類,其中RefParameter是所需的參數,以便從接收到的json消息中獲取這些字段

碼:

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; }
}
  • 所以獲取Facebook傳入消息的ChannelData就像:

碼:

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

如您所見,有趣的值是此ChannelData中的字段“ Postback.Referral.Reference”或“ Referral.Reference”(鑒於它是否是新對話),因此我正在檢查第一個為null,在這種情況下嘗試獲取第二個

希望對您有所幫助。

PS:不要忘記在Messenger機器人設置上設置“開始”按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM