2016-09-19 5 views
2

Я попытался это просто пример для того, чтобы отправить сообщение в Facebook:Отправить сообщение с restFB

public void testSomeMethod() 
    { 
     String token = "XXXXXX"; 
     FacebookClient facebookClient = new DefaultFacebookClient(token, Version.LATEST); 


     IdMessageRecipient recipient = new IdMessageRecipient("123456"); 
     Message message = new Message("Just a simple text"); 

     SendResponse resp = facebookClient.publish("me/messages", SendResponse.class, 
      Parameter.with("recipient", recipient), // the id or phone recipient 
      Parameter.with("message", message)); // one of the messages from above 
    } 

Но я получаю ошибку

com.restfb.exception.FacebookGraphException: Received Facebook error response of type GraphMethodException: Unsupported post request. Object with ID 'me' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api (code 100, subcode null) 
    at com.facebook.impl.FacebookImplTest.testSomeMethod(FacebookImplTest.java:57) 

Можете ли вы предложить какое-то решение?

+0

Какого доступа вы используете? Является ли «идентификатор получателя» полученным через webhook платформы Messenger? – Norbert

+0

Я использую токен доступа с веб-сайта разработчика facebook. –

+0

Вам нужен токен доступа к странице из вашего раздела Facebook App Messenger, потому что вы пытаетесь отправить сообщение chatbot. – Norbert

ответ

1

Я решил эту проблему два часа назад :) Использование "{conversation_id}/сообщений" вместо "мне/сообщений". Вы можете получить conversation_id используя следующий код:

Connection<Conversation> conversations = pageClient.fetchConnection("me/conversations", Conversation.class); 
    for (List<Conversation> conversationPage : conversations) { 
     for (Conversation conversation : conversationPage) { 
      String id = conversation.getId(); //use this conversation_id 
      Connection<Message> messages = pageClient.fetchConnection(id + "/messages", Message.class, Parameter.with("fields", "message,created_time,from,id")); 
      messages.forEach(s -> s.forEach(k -> System.out.println(k.getFrom() + " " + k.getId() + " " + k.getMessage() + " " + k.getSubject() + " "))); 
     } 
    } 

Следующий код работает правильно для меня: лексема

FacebookClient pageClient = new DefaultFacebookClient(pageAccessToken, Version.VERSION_2_6); 
    IdMessageRecipient recipient = new IdMessageRecipient("{user_id}");  
    String conversationId = “t_mid.14XXX.. : XXX...” ;   
    SendResponse resp = pageClient.publish(conversationId +"/messages", SendResponse.class,     
      Parameter.with("recipient", recipient),    
      Parameter.with("message", "Uraaaa!!!")); 
+0

Я получаю 'Caused by: com.restfb.json.JsonException: текст JsonObject должен начинаться с '{' на символ 1' –

Смежные вопросы