Почему запись не добавляется в таблицу CEL?

Добрый день. <br/> У меня есть сервер с Asterisk, на котором включена запись событий в таблицу CEL (events=all). При входящем звонке я наблюдаю, что Asterisk пытается записать информацию о звонке в CEL, как видно из следующих запросов:<br/> 
<pre><code>&gt; 
[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,userfield,extra) VALUES ('CHAN_START',{ts '2025-02-18 12:20:20'},'','','','','','s','DLPN_AM','SIP/7665-00007503','','',3,'','1739874020.185514','1739873998.185511','','','','')]
    -- Called SIP/7665
    -- SIP/7665-00007503 is ringing
    -- SIP/7665-00007503 is ringing
    -- Stopped music on hold on SIP/trunk_zebra_AM-00007502
       &gt; [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,userfield,extra) VALUES ('HANGUP',{ts '2025-02-18 12:20:25'},'','','','','','5690','DLPN_AM,'SIP/7665-00007503','AppQueue','(Outgoing Line)',3,'','1739874020.185514','1739873998.185511','','','','{"hangupcause":16,"hangupsource":"","dialstatus":""}')] </code></pre> <br/> 
Однако я не вижу этой записи в CEL, и, соответственно, модуль Itgrix для связи Битрикса и Asterisk также не может получить оттуда информацию. При этом другие записи в таблице появляются, но закономерности их появления я не могу выяснить. <br/> Можете подсказать, в каком направлении следует искать решение этой проблемы?
  • 18 февраля 2025 г. 19:44
Ответы на вопрос 1
Привет! Проблема, которую вы описали, может быть вызвана несколькими факторами. Давайте рассмотрим некоторые шаги, которые могут помочь вам выяснить, почему записи не добавляются в таблицу CEL (Call Event Log) в вашем Asterisk:

1. **Настройки Asterisk:**
   - Убедитесь, что в файле конфигурации `cel.conf` правильно настроены параметры. Например, это могут быть параметры `enable=yes` и `events=all`, что вы уже делаете.
   - Проверьте, правильно ли настроен `cel_sql.conf`, если вы используете базу данных для хранения событий. Убедитесь, что параметры подключения к базе данных указаны верно.

2. **Проблемы с подключением к базе данных:**
   - Проверьте соединение с базой данных. Убедитесь, что Asterisk имеет права на вставку данных в таблицу. Попробуйте выполнить SQL-запрос вручную, чтобы убедиться, что он работает.
   - Посмотрите на логи Asterisk (`/var/log/asterisk/messages` или аналогичный файл) на наличие ошибок, связанных с базой данных. Возможно, возникают какие-то проблемы при попытке записать данные.

3. **Ошибки в SQL запросах:**
   - В запросах, которые вы привели, есть ошибка в записи: в строке с `HANGUP`, перед значением `SIP/7665-00007503` стоит лишняя запятая. Это может вызвать ошибку при вставке в таблицу, которую вы не видите в своих логах.
   - Убедитесь, что все значения внутри запроса корректны и присутствуют, если есть необходимые поля в таблице.

4. **Параллельность запросов:**
   - Иногда проблемы могут возникать из-за параллельных операций, которые пытаются записать данные в CEL одновременно. Это может привести к блокировкам. Убедитесь, что нет других процессов, которые препятствуют вставке записей.

5. **Версия Asterisk:**
   - Убедитесь, что вы используете актуальную и стабильную версию Asterisk. Иногда в старых версиях могут быть ошибки, касающиеся CEL.

6. **Логи и отладка:**
   - Увеличьте уровень логирования в Asterisk, чтобы получить больше информации. Например, установите уровень логирования на `debug` или проверьте, нет ли дополнительных модулей, которые могут влиять на CEL.
   - Используйте `asterisk -rvvv` для доступа к консоли и следите за выводом в реальном времени.

Если после выполнения всех этих шагов проблема не решается, уточните информацию о вашей конфигурации, версии Asterisk и используемой базе данных, чтобы можно было дать дополнительные рекомендации.
Похожие вопросы