OBSERVE https://developers.facebook.com/docs/chat/
이 문서에서 다루는 서비스 및 API는 Platform API v2.0 릴리스에서 더 이상 사용되지 않습니다. 버전 1.0이 더 이상 사용되지 않으면 chat.facebook.com을 더 이상 사용할 수 없습니다.
중대한! 이것을 읽으면 아마도이 질문과 관련된 어떤 것과는 완전히 다른 것을하고 싶을 것입니다.
Facebook Chat API에 연결하는 WebForms C #으로 채팅을 만들고 있습니다.
나는 또한 이 SO 질문 (및 모든 링크)을 보았습니다 . Facebook이 auth_token
지금 요구 하기 때문에 일부 부분은 더 이상 관련이 없습니다 .
이를 복제하려면 Facebook 웹 앱을 appId
설정하고 xmpp_login 권한이 설정된 및 사용자 계정을 사용해야합니다. 그런 다음 Chat.aspx
with 코드를 생성하고 그에 따라이 코드를 붙여 넣습니다. 그리고 상호 작용할 하드 코딩 된 사용자를 교체합니다.
두 가지 (아마 세 가지) 문제가있어 채팅 메시지를 보내려는 목표를 달성 할 수 없습니다.
// finishes auth process
문서에 명시된 프로세스 가 문서 설명 과 일치하지 않습니다
(Facebook에서 SSL / TLS 기반 성공 메시지를받은 후 응답을받지 못함).- ‘채팅 메시지 보내기’부분이 어떻게 설정되어야하는지 모르겠고, 페이스 북에서 어떤 메시지도받지 못하기 때문에 무엇이 잘못되었는지 알기가 어렵습니다.
PasteBin에 대한 전체 코드는 다음과 같습니다 .
또한 xmpp_login 권한을 추가하기위한 몇 가지 도우미가 있으며 명확성을 위해 제거되었습니다.
전역 변수 :
public partial class Chat : Page
{
public TcpClient client = new TcpClient();
NetworkStream stream;
private SslStream ssl;
private string AppId { get; set; }
public string AppSecret { get; set; }
public string AppUrl { get; set; }
public string UserId { get; set; }
public string AccessToken { get; set; }
private string _error = string.Empty;//global error string for watch debugging in VS.
public const string FbServer = "chat.facebook.com";
private const string STREAM_XML = "<stream:stream xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\" xmlns=\"jabber:client\" to=\"chat.facebook.com\" xml:lang=\"en\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\">";
private const string AUTH_XML = "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='X-FACEBOOK-PLATFORM'></auth>";
private const string CLOSE_XML = "</stream:stream>";
private const string RESOURCE_XML = "<iq type=\"set\" id=\"3\"><bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"><resource>fb_xmpp_script</resource></bind></iq>";
private const string SESSION_XML = "<iq type=\"set\" id=\"4\" to=\"chat.facebook.com\"><session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/></iq>";
private const string START_TLS = "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>";
그런 다음 Page_Load
필요한 모든 단계가 수행됩니다 (또는 수행되어야합니다). 주목할 가치가있는 것은 SendMessage("test");
. 채팅 메시지를 보내는 데 성공할 수 있는지 확인하기 위해 거기에 두려고했습니다. SetUserNameAndAuthToken
인증 토큰과 사용자 이름을 전역 변수로 설정합니다. AuthToken이 작동합니다.
protected void Page_Load(object sender, EventArgs e)
{
this.AppId = "000000082000090";//TODO get from appsettings.
//AddAdditionalPermissions("xmpp_login");//TODO handle xmpp_login persmission
this.AppSecret = "d370c1bfec9be6d9accbdf0117f2c495"; //TODO Get appsecret from appsetting.
this.AppUrl = "https://fbd.anteckna.nu";
SetUserNameAndAuthToken();
Connect(FbServer);
// initiates auth process (using X-FACEBOOK_PLATFORM)
InitiateAuthProcess(STREAM_XML);
// starting tls - MANDATORY TO USE OAUTH TOKEN!!!!
StartTlsConnection(START_TLS);
// gets decoded challenge from server
var decoded = GetDecodedChallenge(AUTH_XML);
// creates the response and signature
string response = CreateResponse(decoded);
//send response to server
SendResponseToServer(response);
SendMessage("test");
// finishes auth process
FinishAuthProcess();
// we made it!
string streamresponseEnd = SendWihSsl(CLOSE_XML);
}
그래서 응답을받은 다음 서버에 응답을 보냅니다.
private void SendResponseToServer(string response)
{
string xml = String.Format("<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">{0}</response>", response);
string response2 = SendWihSsl2(xml);
if (!response2.ToLower().Contains("success"))
_error = response2;
}
1 분 40 초가 소요되며 응답은 다음과 같습니다.
<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
마지막으로 FinishAuthPorcess ()를 수행합니다.
private void FinishAuthProcess()
{
string streamresponse = SendWithSsl(STREAM_XML);
if (!streamresponse.Contains("STREAM:STREAM"))
_error = streamresponse;
string streamresponse2 = SendWihSsl(RESOURCE_XML);
if (!streamresponse2.Contains("JID"))
_error = streamresponse2;
string streamresponse3 = SendWihSsl(SESSION_XML);
if (!streamresponse3.Contains("SESSION"))
_error = streamresponse2;
}
모든 응답은 ""
입니다. 에서 Read
메서드를 보면 SendWithSsl
: 0 바이트입니다. 메시지를 보내려고하면 0 바이트 Facebook에서 데이터를 읽습니다. 왜 그런지 모르겠어요?
답변
이제 새로운 API가 있습니다. 메신저 플랫폼은 어떻게 작동합니까? 사람이 메신저를 통해 비즈니스에 메시지를 보낼 때이 페이지가 앱을 사용하여 대화를 부분적으로 또는 완전히 자동화하는 한 다음이 발생합니다. Facebook 서버는 메시징 앱이 호스팅되는 비즈니스 서버의 URL로 웹훅을 보냅니다. Send API를 사용하면 앱이 메신저에있는 사람에게 응답 할 수 있습니다. 이러한 방식으로 개발자는 자동화 된 흐름을 통해 사람들을 이끄는 안내 식 대화를 구축하거나 메신저에서 에이전트와 비즈니스 존재 사이의 다리 역할을하는 앱을 구축 할 수 있습니다.
메신저 플랫폼은 사용하기 위해 지불 할 필요가 없습니다. 기업이 고객의 문의를 처리하기위한 것입니다. 고객이 상호 작용할 수있는 경험을 구축 한 후에는 광고를 활용하여 클릭 투 메신저 광고 또는받은 편지함 광고와 같이 사람들을 귀하의 경험으로 유도 할 수 있습니다.
Messenger for Business 환경은 어떤 모습입니까? Original Coast Clothing이라는 메신저에서 채팅 할 수있는 샘플 전자 상거래 비즈니스가 있습니다.
여기에서 샘플 비즈니스와 채팅
어떻게 시작합니까? 메신저 내에서 경험을 시도 할 수있는 테스트 페이지와 테스트 앱을 만들어 시작할 수 있습니다. 시작하는 데 도움이되는 몇 가지 예가 있습니다. 앱을 배포 할 준비가되면 검토를 위해 제출할 수 있습니다. 앱이 검토 프로세스를 통과하면 대중과 상호 작용할 준비가 된 것입니다.
시작하려면 메신저, Facebook 페이지 및 웹 후크가 전송 될 URL이 필요합니다.
다음은 위의 경험을 테스트 페이지에 배포하여 시작하는 단계별 가이드입니다.
구축 할 준비가 되셨습니까? 시작하다
https://developers.facebook.com/products/messenger/
https://developers.facebook.com/docs/messenger-platform/reference/send-api/