2017-05-15 6 views
1

내 봇에 액세스하는 데 사용하는 링크에서 Facebook 사용자를위한 데이터를 초기화하고 싶습니다. 이 기사를 찾았습니다 : https://developers.facebook.com/docs/messenger-platform/referral-params 하지만 bot 프레임 워크 (C#)에서 참조 매개 변수를 가져 오는 방법을 모릅니다. https://m.me/ {BOT_ID}? ref = {SOME_MESSAGE}페이스 북의 메신저에서 추천 매개 변수를 가져 오는 방법은 무엇입니까? Bot Framework C#

도움이 될만한 링크가 있습니다.

감사

답변

1

내가 성공적으로 동일한 작업을 수행하려고 (또한 내 솔루션을 공유 할 수 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; } 
} 
  • 그래서 페이스 북 수신 메시지의 ChannelData 같은입니다 점점 ​​:

코드 : 당신이 볼 수 있듯이

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

, 흥미로운 값은 분야 "Postback.Referral.Reference"OR " Referral.Reference "이 ChannelData에서 (새로운 대화인지 아닌지를 고려하여) 첫 번째 항목이 null인지 확인하고 두 번째 항목을 얻으려는 경우

희망 사항 도움이됩니다.

추신 : Messenger 봇 설정에서 시작 버튼을 설정하는 것을 잊지 마십시오.

+1

답장이 도움이 되었다면, 수락하는 것을 잊지 마십시오. 감사합니다. –

+0

이 솔루션을 제공해 주셔서 감사합니다. 그것은 나를 꽤 두통으로 구해줬다. – SirDerpington