XMPP - Facebook - Как моя клиентская реализация может получать сообщения, отправленные другими клиентскими реализациями?
Я реализовал чат-клиент на Facebook, который подключается с помощью Smack API. На данный момент основные функции работают хорошо. Я отправляю, получаю сообщения, получаю уведомления о наборе текста... Но у меня проблема. Если я разговариваю с кем-то, использующим мой клиент, я получаю сообщения, которые я отправлял контакту, в чате Facebook. Но если отправить сообщение контакту через чат Facebook, мой клиент не получит это сообщение. Если контакт отвечает мне, я получаю его сообщение, но диалог становится неполным, поскольку он просто показывает сообщения, отправленные контактным лицом, но не показывает сообщение, которое я отправил в другом XMPP-клиенте.
Поскольку Facebook показывает сообщения, отправленные моим клиентом, я думаю, что можно сделать то же самое. Я действительно новичок в XMPP, и мне нужна помощь, чтобы понять, как я могу это сделать.
Мой код выглядит так прямо сейчас:
Получение сообщений:
connection.getChatManager().addChatListener(
new ChatManagerListener(){
@Override
void chatCreated(Chat chat, boolean createdLocally) {
if(!createdLocally){
chat.addMessageListener(messageListener)
}
}
}
)
Слушатель сообщения просто передает сообщение с помощью push на мой клиент Javascript.
Отправка сообщений:
public boolean sendMessage(String jid, String message){
FacebookContact contact = mapJIDContact.get(jid)
try{
if (contact != null && (connection != null) && (connection.isConnected())) {
ChatManager chatManager = connection.getChatManager();
if(contact.chat == null){
contact.chat = chatManager.createChat(jid, messageListener);
}
contact.chat.sendMessage(message);
return true
}
return false
}
catch (XMPPException e){
return false
}
}
FacebookContact - это класс, созданный мной. Здесь хранятся некоторые контактные данные и чат, если он уже был открыт.
РЕДАКТИРОВАТЬ:
Я обнаружил, что эта функция, которую я хочу, предоставляется этим расширением XMPP: http://xmpp.org/extensions/xep-0280.html. Я пытаюсь найти, реализует ли чат в Facebook это расширение.
1 ответ
Если вы отправляете IQ для включения функции, сервер отвечает сообщением об ошибке IQ
IQ:
<iq xmlns='jabber:client'
from='my.facebook.username@chat.facebook.com/Mac-Pro-di-Michele_65563c5f_4D689E59FB8A5'
to='chat.facebook.com'
type='set'
id='enable1'>
<enable xmlns='urn:xmpp:carbons:2'/>
</iq>
Ответить:
<iq xmlns='jabber:client'
from='chat.facebook.com'
to='my.facebook.username@chat.facebook.com/Mac-Pro-di-Michele_65563c5f_4D689E59FB8A5' type='error'
id='enable1'>
<enable xmlns='urn:xmpp:carbons:2'/>
<error code='501' type='cancel'>
<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>