У меня есть собственная база данных для регистрации вызовов в astreisk. Мне нужно вставить длительность вызова каждого вызова в таблицу. Как я могу это сделать? Могу ли я сделать это в своем диалплане?Как вставить длительность звонка Asterisk в мою собственную базу данных?
ответ
Вы не даете много информации о том, какой бэкэнд db вы хотели бы использовать, а также если вы спрашиваете, как написать себе продолжительность звонка или как настроить звездочку для записи рассматриваемого cdr.
Итак, обычно говоря, у вас есть 3 возможных варианта этого (см. Ниже). Для опций и вам необходимо открыть соединение с базой данных самостоятельно, написать запросы, необходимые для вставки/обновления любых строк (строк), обработки ошибок и т. Д. Хотя для опции вам просто нужно для настройки звездочки для выполнения задания.
1) Asterisk может сделать это по умолчанию самостоятельно, путем записи CDR (Call Detail Record) каждого вызова на бэкэнд. Этот бэкэнд может быть csv, mysql, pgsql, sqlite и другими базами данных через модуль cdr_odbc. Вы должны настроить ваш cdr.conf (и в зависимости от внутреннего интерфейса, который вы выбрали, cdr_mysql.conf, cdr_odbc.conf, cdr_pgsql.conf с вашей информацией бэкэнд, как учетные данные, имена таблиц и т.д.).
ЦХД будет записана по умолчанию с некоторыми содержимым, которые являются CDR переменные (взятые из the predefined asterisk variable list)
Если канал имеет корд, что корд запись имеет свой собственный набор переменных, которые могут доступ к ним аналогичен канальным переменным. Возможны следующие встроенные переменные и, если не указано, только для чтения.
Те интересные для вас в этот момент будет:
${CDR(duration)} Duration of the call.
${CDR(billsec)} Duration of the call once it was answered.
${CDR(disposition)} ANSWERED, NO ANSWER, BUSY
Когда диспозиция ANSWER, billsec будет содержать количество секунд для счета (общий «ответил время» вызова), а длительность будет содержать общее время вызова, включая время без биллинга.
2) Если, с другой стороны, если вы не спрашиваете о корде, но хотите, чтобы написать продолжительность вызова, вы можете иметь AGI скрипт, который после выдачи dial(), считывающего CDR (billsec) переменная или ANSWEREDTIME (устанавливается командой Dial()):
${DIALEDTIME} * Time for the call (seconds)
${ANSWEREDTIME} * Time from dial to answer (seconds)
3) Вы также можете достичь того же результата, имеющего AMI клиент для прослушивания события Varset для переменной ANSWE REDTIME. Соответствующее событие будет содержать канал, для которого эта переменная установлена.
Итак, варианты 2 и 3, безусловно, более полезны, если у вас уже есть сценарий AGI или клиент AMI ваших собственных контрольных/обрабатывающих вызовов, а вариант 1 более общий, но, возможно, немного менее гибкий.
Надеюсь, это поможет!
- 1. Как использовать мою собственную базу данных sqlite?
- 2. Как использовать мою собственную базу данных в ASP.NET Identity (WebForms)
- 3. Невозможно вставить в мою базу данных
- 4. Длительность звонка класс
- 5. Создайте мою собственную (не-базу данных) функцию fetch_object
- 6. Asterisk auto Запись звонка
- 7. Можно ли проверить глагол, не создавая мою собственную базу данных?
- 8. Как вставить переменные в мою базу данных в SQLite?
- 9. Как получить длительность звонка в Android?
- 10. Как я могу вставить изображение в мою базу данных?
- 11. Как вставить резюме в мою базу данных sqlite
- 12. Как вставить данные в мою базу данных с помощью entitymanger?
- 13. Как вставить данные из файла CSV в мою базу данных?
- 14. Как вставить строку, разделенную штрихом, в мою базу данных?
- 15. Как вставить мою базу данных в таблицу QTableWidget?
- 16. Asterisk - получить длительность вызова B-ноги
- 17. Тип данных для поля Длительность звонка в базе данных MySQL
- 18. Asterisk - Время ожидания исходящего звонка
- 19. Как создать мою базу данных?
- 20. Связывание мою базу данных значений
- 21. Как обновить мою базу данных
- 22. Как обновить мою базу данных
- 23. Как обновить мою базу данных?
- 24. Как создать собственную карту, используя собственную базу данных
- 25. Я не могу вставить значение в мою базу данных доступа
- 26. Вставить значение внешнего ключа в мою базу данных sql?
- 27. Не удается вставить данные в мою базу данных Mysql?
- 28. Не могу вставить в мою базу данных rails
- 29. PHP Вставить в мою базу данных не будет
- 30. Невозможно вставить в мою базу данных с помощью PHP
Прошу прощения за то, что я не дал достаточно информации. Вариант 2 и 3 - это то, что мне нужно. Но у меня есть вопрос: возможно ли получить доступ к ANSWEREDTIME в диалплане? – Karadous
@ Karadous Конечно. См .: http://www.voip-info.org/wiki/view/Asterisk+variables. Поэтому просто используйте $ {ANSWEREDTIME} и (возможно) используйте параметр g команды набора. – marcelog
Очень хороший ответ. Для полноты использования, для опции (1), вы можете указать cdr_adaptive_odbc вместо cdr_odbc, что более гибко для пользовательских данных. –