2012-11-20 27 views
4

我正在创建一个文本聊天应用程序并使用Ejabberd服务器和strophe.js。在xmpp和ejabberd中使用头像图片

我正在使用mssql作为ejabberd的外部数据库。我将用户表中的所有应用程序用户转移到ejabberd的rosterusers表中。

我想指定应用程序的配置文件图像url作为ejabberd用户的化身图像。

在哪里可以将头像网址插入ejabberd数据库?我查了vcard表,但没有列头像图片网址?

我们可以使用ejabberd数据库处理它,或者ejabberd在内部管理头像吗?

如果我们无法管理ejabberd中的头像,那么我们如何将它与strophe.js一起使用,即sepcify头像图像并接收其他名册头像图像?

请帮

回答

0

设置电子名片图片:

我知道用户的资料图片和使用的strophe制作到ejabberd服务器的连接后,我在虚拟卡使用的strophe节设置个人资料图片。

下面示例中的虚拟卡设定图片网址:

iq = $iq({ type: 'set', to: currentUserObj.jabberid+ "@" + CDomain }).c('vCard', { xmlns:'vcard-temp' }).c('PHOTO').c('EXTVAL', currentUserObj.profileImg); 

connection.sendIQ(iq); 

希望它会帮助别人:)

+0

这真的有用吗?我在看spec(http://xmpp.org/extensions/xep-0153.html),看起来很清楚你不应该在这种情况下使用EXTVAL。引用4.5.2:“元素不应包含指向图像文件的URI的。” – drewww

+0

是的,它在web应用程序中为我们工作。在移动应用上,我们正在使用其他机制。 –

+0

@RohitTailor感谢您的回答。想知道代码中'currentUserObj.profileImg'是什么,它是文件上传的文件url还是base64字符串? – redV

3

我相信你可以使用命令ejabberctl从命令行与化身网址加载到用户的电子名片。从URL

ejabberdctl set_vcard foo chat.myjabber.com PHOTO http://link_to_image.jpg 
ejabberdctl set_vcard2 foo chat.myjabber.com PHOTO EXTVAL http://link_to_image.jpg 
+0

感谢SLM。其实我在web应用程序中创建聊天,并不想构建一个模块来从外部php或其他脚本调用命令行实用程序。 –