четверг, 18 июля 2013 г.

Freepbx + русский Caller ID


FreePBX к сожалению по умолчанию не хочет сохранять CallerID на языках отличных от английского.
Чтобы это исправить нужно удалить !isAlphaNumeric в файле /var/www/html/admin/modules/core/functions.inc.php:6850 (позиция строки может различаться)

Итоговый вид такой:

$currentcomponent->addguielem($section, new gui_textbox('name', $name, _("Display Name"), _("The CallerID name for calls from this user will be set to this name. Only enter the name, NOT the number."),  'isWhitespace()', $msgInvalidDispName, false));

После этого станет возможным ввод русских символов и станет отображаться русский CallerID, однако в самой GUI эти символы станут отображаться кракозяблями.

Решение - или обновить PHP до версии 5.4+ или подправить libraries/components.class.php:655 до вида:

$this->html_input = "<input type=\"text\" name=\"$this->_elemname\" id=\"$this->_elemname\" size=\"35\" $disable_state $maxlength tabindex=\"$tabindex\" value=\"" . htmlentities($this->currentvalue, ENT_COMPAT | ENT_HTML401, 'UTF-8') . "\"

Но и это еще не все. В фале /var/www/html/admin/libraries/db_connect.php  (примерный номер строки 30) после строки:

$db = DB::connect($datasource); // attempt connection

Нужно добавить следующее:

$db->query('SET character set utf8');
$db->query('SET names utf8');

Еще нужно изменить кодировки двух таблиц на UTF-8 в бд asterisk:

ALTER TABLE `devices` COLLATE='utf8_general_ci', CONVERT TO CHARSET utf8;
ALTER TABLE `users` COLLATE='utf8_general_ci', CONVERT TO CHARSET utf8;

Если после этого у вас отображаются вопросы, нужно пересохранить номер с нужным имене

Комментариев нет:

Отправить комментарий