использовать изображение аватара в xmpp и ejabberd

Я создаю приложение для текстового чата и использую сервер Ejabberd и strophe.js.

Я использую mssql в качестве внешней базы данных для ejabberd. Я перенес всех пользователей приложения в таблицу пользователей и друзей в таблицу rosterusers ejabberd.

Я хочу указать URL-адрес изображения профиля приложения в качестве изображения аватара пользователя ejabberd.

Куда вставить URL-адрес аватара в базу данных ejabberd? Я проверил таблицу vcard, но нет столбца для URL-адреса изображения аватара?

Можем ли мы справиться с этим, используя базу данных ejabberd, или ejabberd самостоятельно управляет аватарами?

Если мы не можем управлять аватарами в ejabberd, то как мы можем использовать его с strophe.js, то есть выделить изображение аватара и получить изображение аватара других элементов списка?

Пожалуйста помоги


person Rohit Tailor    schedule 20.11.2012    source источник


Ответы (2)


Я считаю, что вы можете использовать команду 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
person slm    schedule 13.01.2013
comment
Спасибо слм. На самом деле я создаю чат в веб-приложении и не хочу создавать модуль для вызова утилиты командной строки из внешнего php или другого скрипта. - person Rohit Tailor; 08.02.2013

Установить изображение VCard из URL-адреса:

Я знаю изображение профиля пользователя, и после подключения к серверу ejabberd с помощью strophe я устанавливаю изображение профиля в vcard, используя строфу strophe.

Ниже приведен пример установки URL-адреса изображения в vcard:

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

connection.sendIQ(iq);

Надеюсь, это поможет кому-то :)

person Rohit Tailor    schedule 08.02.2013
comment
Это действительно работает? Я просматривал спецификацию (xmpp.org/extensions/xep-0153.html ) и казалось очевидным, что вы не должны использовать EXTVAL в этом контексте. Чтобы процитировать 4.5.2: элемент ‹PHOTO/› НЕ ДОЛЖЕН содержать ‹EXTVAL/›, который указывает на URI для файла изображения. - person drewww; 23.03.2013
comment
Да, это работает для нас в веб-приложении. В мобильных приложениях мы используем другой механизм. - person Rohit Tailor; 23.04.2013
comment
@RohitTailor Спасибо за ответ. Хотели бы знать, что такое «currentUserObj.profileImg» в вашем коде, это URL-адрес файла для загрузки файла или строка base64? - person redV; 18.01.2014
comment
currentUserObj.profileImg — это URL-адрес изображения (URL-адрес Amazon S3). Извините за задержку с ответом. - person Rohit Tailor; 06.05.2014
comment
Здравствуйте, @RohitTailor. Не могли бы вы сообщить мне, какой механизм вы использовали для мобильного приложения? Потому что у меня такая же проблема в мобильном приложении. - person Chirag Solanki; 09.06.2018
comment
Привет @ChiragSolankI Я использовал XMPPFramework github.com/robbiehanson/XMPPFramework для приложения IOS. - person Rohit Tailor; 27.06.2018