Добрый день. Возникла вот такая проблема.
Отсылаю сообщение содержащее кириллицу, через ejabberd_xmlrpc комадной send_message_chat и клиент которому адресовывается сообщение выходит в оффлайн с ошибкой. Если сообщение содержит только латинский буквы, то все нормально - клиент получает сообщние.
Я так понимаю это из-за того что ejabberd_xmlrpc не понимает utf8?
В результате проверки и экспериментов, я пришел к выводу что кириллические шрифты не распознает сама библиотека - xmlrpc (модуль эрланга). Саму библиотеку брал отсюда - http://www.ejabberd.im/files/contributions/xmlrpc-1.13-ipr2.tgz
Что посоветуете для решения моей проблемы. Мне необходимо делать много разных действий через ejabberdctl интерфейс. Например создавать комнаты с русскими именами, отсылать русскоязычные сообщения. Пробовал mod_rest, но с ним у меня не получилось сделать вот так например:
# python
call = "create_room 'КОМНАТА С КИРИЛЛИЦЕЙ В НАЗВАНИИ' conference.localhost localhost"
resp = urllib2.urlopen(server_url, call)
result = resp.read()
return json.dumps(result)
Вылетает ошибка если содержатся пробелы в названии. Плюс тянет за собой в название кавычки. Да и на ejabberd_xmlrpc уже много завязано в моей системе, а вот про кириллицу понял только сегодня.
Возможно есть другие эрланговские библиотки для работы с xmlrpc, которые могут работать с кириллицей
перешел на mod_rest. Если
перешел на mod_rest. Если кому понадобится, написал вот такую обертку на питоне
def ejabberdctl(params):
"""send ejabberdctl command via post data"""
import urllib2
server_url = settings.XMPP_REST_SERVICE_HOST
call = ' '.join(['\"' + param + '\"' for param in params])
try:
resp = urllib2.urlopen(server_url, call)
except:
raise Exception("Error in ejabberdctl. Error command - %s" % " ".join(params))
return [data.split('\t') for data in resp.read().split('\n')]
Использование
ejabberdctl([
'register',
'username',
'host',
'password'
])
Вообще для выполнения комманд судя по всему лучше использовать mod_rest. Модуль ejabberd_xmlrpc - не обрабатывает кириллицу. Причем насколько я понял, проблема в самой erlang-овской библиотеке xmlrpc-1.13... Поправьте меня, если я ошибаюсь.
Вам бы стоило обратиться к
Вам бы стоило обратиться к разработчикам. Они, боюсь, не читают русские разделы форума. Можно либо написать в англоязычный раздел, либо в их багтрекер.