ћы в Telegram - чате. “ы с нами? :)

ћерион Ќетворкс

¬сем привет! ¬ сегодн€шней статье мы расскажем, как победить очень надоедливый УбагФ во FreePBX, который кочует из версии в версию и сильно мешает пользовател€м, которые используют кириллицу, то есть русские буквы, в именах внутренних номеров своей IP-ј“—. “очно можно сказать, что данна€ проблема присутствовала в FreePBX 13 и перебралась в 14 релиз.

 ак многие могли догадатьс€, речь пойдЄт о неправильном отображении русской кодировки в модуле CDR, в простонародье Ц кракоз€бры в CDR.


ѕредыстори€

»так, вот вы установили самый последний актуальный FreePBX Distro SNG7-FPBX-64bit-1707-1, долго ждали когда же наконец закончитс€ загрузка 571 пакета (если устанавливаете на VM)

Ќебольшой оффтоп дл€ тех, кто устанавливает FreePBX 14 на VM и подумал, что процесс установки завис на 571 пакете и надо его прервать Ц Ќ≈“, он не завис, наберитесь терпени€, правда. ƒа, это долго, мы, например, ждали полтора часа. ќтдохните, попейте кофе, почитайте о нововведени€х в FreePBX 14

», наконец, дождались - всЄ готово, пора регистрировать абонентов. ¬ы добавили два внутренних номера с русскими именами, пусть будет јлексей ƒобронравов и —ергей «лонамеров

”правление модул€ми в FreePBX 13

«арегистрировали дл€ каждого по софтфону и провели тестовый звонок Ц успех. ј что же в CDR? ќткрываете ReportsCDR Reports и видите те самые Укракоз€брыФ, которые мало чем напоминают имена наших внутренних абонентов.

”правление модул€ми в FreePBX 13

«накомо? “огда читай дальше!

Ѕыстро проверим таблицу cdr в базе asteriskcdrdb и убедимс€, что там така€ же картина:

”правление модул€ми в FreePBX 13

–ешение

¬нимание! ѕрежде чем повтор€ть дальнейшие инструкции Ц сделайте полный бэкап системы или снэпшот виртуальной машины.  омпани€ ћерион Ќетворкс не несЄт ответственности за потенциальные проблемы, которые могут возникнуть на вашей IP-ј“—. Ќеправильное выполнение нижеизложенных действий может привести к полной неработоспособности FreePBX и Asterisk!

¬ интернете можно найти много советов по устранению данной проблемы, начина€ от выставлени€ значени€ charset = utf8 в файле /etc/asterisk/cdr_mysql.conf и выполнени€ core reload, когда записи оп€ть слетают и заканчива€ написанием скрипта, который будет врем€ от времени производить принудительную перекодировку записей. Ќо всЄ это либо УкостыльФ, либо не помогает вовсе.

Ќа сайте разработчика freepbx.org по данной проблеме даже заведЄн официальный Bug FREEPBX-15268, который по сегодн€шний день имеет статус (11.10.2017) DEV TESTING: Unresolved, то есть Ц не решЄн.

Ѕолее менее действенным способом решени€ этой проблемы €вл€етс€ снос старого MySQL коннектора и установка mysql-connector-odbc-5.3.9 (ANSI Driver), а затем внесение изменений в файл /etc/odbc.ini следующего вида:

[MySQL-asteriskcdrdb]
driver=MySQL ODBC 5.3 ANSI Driver

ѕосле этого записи в CDR, конечно, будут отображатьс€ корректно, однако, все логи будут завалены предупреждени€ми типа:

[2017-10-13 22:31:16] WARNING[8933] cel_odbc.c: Insert failed on 'asteriskcdrdb:cel'. CEL failed: INSERT INTO cel (eventtype,eventtime,cid_name,cid_num,cid_ani,cid_rdnis,cid_dnid,exten,context,channame,appname,appdata,amaflags,accountcode,uniqueid,linkedid,peer,userdeftype,extra) VALUES ('CHAN_START',{ts '2017-10-13 22:31:16.974567'},'јлексей ƒобронравов','175','','','','s','from-internal','SIP/175-00000001','','',3,'','1507923076.1','1507923076.0','','','')
[2017-10-13 22:31:18] WARNING[8933] cel_odbc.c: Insert failed on 'asteriskcdrdb:cel'. CEL failed: INSERT INTO cel (eventtype,eventtime,cid_name,cid_num,cid_ani,cid_rdnis,cid_dnid,exten,context,channame,appname,appdata,amaflags,accountcode,uniqueid,linkedid,peer,userdeftype,extra) VALUES ('ANSWER',{ts '2017-10-13 22:31:18.631244'},'јлексей ƒобронравов','175','175','','','175','from-internal','SIP/175-00000001','AppDial','(Outgoing Line)',3,'','1507923076.1','1507923076.0','','','')

ѕри этом в самой таблице cel, на которую ругаетс€ сервер, всЄ будет нормально:

”правление модул€ми в FreePBX 13

¬роде решение, CDR корректен, но лог будет буквально забит этими предупреждени€ми, а мы этого не хотим.

»так, сейчас мы опишем способ решени€, после которого и логи будут чистыми и никаких Укракоз€брФ в CDR вы не увидите.

ƒл€ начала, нужно удалить текущий mysql-connector-odbc, однако, в силу того, что он св€зан зависимост€ми, вместе с ним удалитс€ и сам Asterisk. ѕоэтому, сначала нужно узнать, какой именно коннектор установлен на сервере, и удалить его отдельно. ƒл€ этого пишем команду:

rpm -qa | grep mysql-connector-odbc

Ќу и после предыдущих манипул€ций видим, что у нас установлен mysql-connector-odbc-5.3.9-1.el7.x86_64, веро€тнее всего у вас будет mysql-connector-odbc-5.3.6. “еперь его нужно удалить, но не учитыва€ при этом его зависимости. Ќам нужно удалить только коннектор, дл€ этого пишем следующую команду:

rpm -e --nodeps "mysql-connector-odbc-5.3.9-1.el7.x86_64"

“еперь нужно установить новый коннектор, но только не от MySQL, а от MariaDB, дл€ этого пишем:

¬нимание! ¬вод следующей команды без предварительного сноса прежнего коннектора может привести к полному отказу Asterisk!

yum install mariadb-connector-odbc

“еперь проверьте файл /etc/odbcinst.ini в нЄм об€зательно должна быть запись:

[MariaDB]
Description=ODBC for MariaDB
Driver=/usr/lib64/libmaodbc.so
Setup=/usr/lib64/libodbcmyS.so
UsageCount=1

“еперь сделаем перезагрузку fwconsole restart и всЄ готово. ѕроводим ещЄ пару тестовых звноков, смотрим в модуль CDR во FreePBX и провер€ем таблицу cdr в asteriskcdrbd:

”правление модул€ми в FreePBX 13 ”правление модул€ми в FreePBX 13

» логи тоже проверьте, они будут чистыми, никаких предупреждений :)

Ќа этом Ц всЄ. Ќадеемс€, что наша статьс€ будет вам полезна и поставит, наконец, точку в истории этого надоевшего всем бага. ¬ыражаем благодарность нашим читател€м, которые активно обсуждали данную проблему в комментари€х и подсказали правильное направление дл€ еЄ решени€.


ѕолезна ли ¬ам эта стать€?

–аз в неделю мы отправл€ем дайджест с самыми интересными стать€ми.

P.S. ≈сли укажите свою дату рождени€, то мы об€зательно ¬ас поздравим и подарим небольшой подарок :)

Ќажима€ на кнопку "ѕодписатьс€", вы даете согласие на обработку своих персональных данных