Задать вопрос
  • Как получить длину и статус разговора из Asterisk а после передать в событие с помощью extensions_custom.conf?

    @Rust56
    Для того, чтобы получить длину и статус разговора в Asterisk, можно использовать переменные CDR(duration) и CDR(disposition), соответственно. CDR (Call Detail Record) - это запись о каждом завершенном звонке, которую Asterisk сохраняет в базе данных. Вы можете использовать эти переменные в своем скрипте для передачи в событие.

    Например, для передачи длины разговора и его статуса в событие, можно использовать следующий код в расширении [ext-did-custom]:

    exten => s,n,Set(CallEnd=${STRFTIME(epoch,,%s)})
    exten => s,n,Set(CallLength=$[${CallEnd}-${CallStart}])
    exten => s,n,Set(CallMeDISPOSITION=${CDR(disposition)})
    exten => s,n,Event(custom,CallLength:${CallLength},CallMeDISPOSITION:${CallMeDISPOSITION})

    Здесь мы добавляем несколько строк кода, чтобы получить длину разговора (CallLength) и статус разговора (CallMeDISPOSITION), а затем вызываем событие с помощью команды Event, чтобы передать эти значения.

    Кроме того, убедитесь, что вы настроили Asterisk на запись CDR в базу данных. Вы можете проверить это, выполнив команду cdr show status в консоли Asterisk. Если CDR не записываются в базу данных, то значения переменных CDR(duration) и CDR(disposition) не будут доступны.

    После того, как вы внесли изменения в файл extensions_custom.conf, необходимо перезагрузить Asterisk, чтобы изменения вступили в силу. Для этого можно выполнить команду fwconsole reload в консоли сервера FreePBX.
    Ответ написан
    Комментировать