我想在facebook用户基础上为他们用来访问我的机器人的链接初始化一些数据。我找到了这篇文章: https://developers.facebook.com/docs/messenger-platform/referral-params 但我不知道如何从机器人框架(C#)获得推荐参数。我的目的是在这样的链接上设置用户数据:https://m.me/ {BOT_ID}?ref = {SOME_MESSAGE}
任何帮助将不胜感激。
由于
答案 0 :(得分:2)
(也在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; }
}
代码:
if (incomingMessage.TryGetChannelData(out FacebookChannelData channelDataInfo))
{
return channelDataInfo.RefParameter;
}
else
{
return String.Empty;
}
正如您所看到的,有趣的值是字段" Postback.Referral.Reference" OR" Referral.Reference"在这个ChannelData中(假设它是一个新的对话),所以我要检查第一个是否为null并且在这种情况下试图获得第二个
希望它会有所帮助。
PS:不要忘记在Messenger机器人设置上设置开始按钮。