Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
astpanel:ats:asterisk:setstatus_v6 [2014/06/16 13:56] apor |
astpanel:ats:asterisk:setstatus_v6 [2018/06/08 09:18] (текущий) apor [Пример 1C_SetStatus.php] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
===== Описание ===== | ===== Описание ===== | ||
+ | <note important>**В этой статье описан алгоритм работы**. Пример реализации описан в [[http://wiki.miko.ru/astpanel:dialplan_miko_ajam | статье]] </note> | ||
+ | |||
В плане набора должен быть описан контекст **miko_ajam**.\\ | В плане набора должен быть описан контекст **miko_ajam**.\\ | ||
В контексте miko_ajam определяется extension с номером ** 10000222**.\\ | В контексте miko_ajam определяется extension с номером ** 10000222**.\\ | ||
Строка 24: | Строка 26: | ||
// ООО "МИКО" - 2014-03-04 | // ООО "МИКО" - 2014-03-04 | ||
// v.1.5 // 1С_Set_Status // 10000222 | // v.1.5 // 1С_Set_Status // 10000222 | ||
- | // Передача статусов пользователей | + | // Передача статусов пользователей |
------------------------------------------------------- | ------------------------------------------------------- | ||
Скрипт протестирован на Askozia v2: | Скрипт протестирован на Askozia v2: | ||
Строка 57: | Строка 59: | ||
if($ret['result']==1&&$ret['code']==200){ | if($ret['result']==1&&$ret['code']==200){ | ||
// успех выполнения операции | // успех выполнения операции | ||
- | $agi->exec("UserEvent", "DB_$dbFamily,сhannel:$chan,key:$key,val:$val"); | + | $agi->exec("UserEvent", "DB_$dbFamily,chan1c:$chan,key:$key,val:$val"); |
}else{ | }else{ | ||
// не установлена! | // не установлена! | ||
- | $agi->exec("UserEvent", "DB_$dbFamily,сhannel:$chan,key:$key,val:"); | + | $agi->exec("UserEvent", "DB_$dbFamily,chan1c:$chan,key:$key,val:"); |
} | } | ||
Строка 77: | Строка 79: | ||
if($ret['result']==1&&$ret['code']==200){ | if($ret['result']==1&&$ret['code']==200){ | ||
// успех выполнения операции | // успех выполнения операции | ||
- | $agi->exec("UserEvent", "DB_$dbFamily,Channel:$chan,key:$key,val:$val"); | + | $agi->exec("UserEvent", "DB_$dbFamily,chan1c:$chan,key:$key,val:$val"); |
}else{ | }else{ | ||
// были ошибки | // были ошибки | ||
- | $agi->exec("UserEvent", "Error_data_put_$dbFamily,Channel:$chan,key:$key,val:$val"); | + | $agi->exec("UserEvent", "Error_data_put_$dbFamily,chan1c:$chan,key:$key,val:$val"); |
} | } | ||
}elseif($command=='show'){ | }elseif($command=='show'){ | ||
Строка 104: | Строка 106: | ||
if($ch == 20){ | if($ch == 20){ | ||
// отправляем данные в 1С, обнуляем буфер | // отправляем данные в 1С, обнуляем буфер | ||
- | $agi->exec("UserEvent", "From$dbFamily,Channel:$chan,Date:$date1,Lines:$result"); | + | $agi->exec("UserEvent", "From$dbFamily,chan1c:$chan,Date:$date1,Lines:$result"); |
$result = ""; $ch = 1; | $result = ""; $ch = 1; | ||
} | } | ||
Строка 111: | Строка 113: | ||
// проверяем, есть ли остаток данных для отправки | // проверяем, есть ли остаток данных для отправки | ||
if(!$result == ""){ | if(!$result == ""){ | ||
- | $agi->exec("UserEvent", "From$dbFamily,Channel:$chan,Date:$date1,Lines:$result"); | + | $agi->exec("UserEvent", "From$dbFamily,chan1c:$chan,Date:$date1,Lines:$result"); |
} | } | ||
}else{ | }else{ | ||
Строка 123: | Строка 125: | ||
?> | ?> | ||
</code> | </code> | ||
+ | ===== Проверка ===== | ||
+ | Для проверки можно использовать следующий скрипт: | ||
- | ===== Для проверки можно использовать следующий скрипт ===== | + | ==== Запись в AstDB ==== |
<code> | <code> | ||
#!/bin/sh | #!/bin/sh | ||
Строка 146: | Строка 150: | ||
asterisk -rvvv; | asterisk -rvvv; | ||
</code> | </code> | ||
+ | |||
+ | Пример вывода CLI: | ||
+ | <code> -- Executing [10000222@miko_ajam:1] NoOp("SIP/104-000000d2", "miko_ajam calling application: 1C_Set_Status") in new stack | ||
+ | -- Executing [10000222@miko_ajam:2] Set("SIP/104-000000d2", "CDR(miko_ajamCalleridNum)=10000222") in new stack | ||
+ | -- Executing [10000222@miko_ajam:3] Goto("SIP/104-000000d2", "miko_ajam,10000222,1") in new stack | ||
+ | -- Goto (miko_ajam,10000222,1) | ||
+ | -- Executing [10000222@miko_ajam:1] AGI("SIP/104-000000d2", "miko_ajam.php") in new stack | ||
+ | -- Launched AGI Script /etc/asterisk/agi-bin/miko_ajam.php | ||
+ | -- AGI Script Executing Application: (UserEvent) Options: (DB_CF,Channel:SIP/104,key:104,val:79257184222) | ||
+ | -- AGI Script Executing Application: (NoCDR) Options: ()</code> | ||
+ | |||
+ | Пример ответа AMI: | ||
+ | <code>Event: UserEvent | ||
+ | Privilege: user,all | ||
+ | UserEvent: DB_CF | ||
+ | Uniqueid: askozia-1403173782.683 | ||
+ | Channel:SIP/104 | ||
+ | key:104 | ||
+ | val:79257184222</code> | ||
+ | |||
+ | Альтернативная CLI команда: | ||
+ | <code>askoziapbx*CLI> database put CF 104 74922293045 | ||
+ | Updated database successfully</code> | ||
+ | |||
+ | ==== Чтение из AstDB ==== | ||
+ | |||
+ | <code> | ||
+ | #!/bin/sh | ||
+ | dir_script='/tmp/'; | ||
+ | # каталог из asterisk.conf | ||
+ | astspooldir='/var/spool/asterisk'; | ||
+ | # | ||
+ | call_text="Channel: SIP/104 | ||
+ | Context: miko_ajam | ||
+ | Extension: 10000222 | ||
+ | Callerid: Alexey<104> | ||
+ | Setvar: command=put | ||
+ | Setvar: dbFamily=CF | ||
+ | Setvar: key=104 | ||
+ | Setvar: val=79257184222 | ||
+ | Setvar: chan=SIP/104"; | ||
+ | |||
+ | echo "$call_text" > /tmp/file.call; | ||
+ | mv '/tmp/file.call' "$astspooldir/outgoing/"; | ||
+ | |||
+ | asterisk -rvvv; | ||
+ | </code> | ||
+ | Пример ответа CLI при "verbose 3": | ||
+ | <code> -- Executing [10000222@miko_ajam:1] NoOp("SIP/104-000000d0", "miko_ajam calling application: 1C_Set_Status") in new stack | ||
+ | -- Executing [10000222@miko_ajam:2] Goto("SIP/104-000000d0", "DIALPLAN-APPLICATION-1C_Set_Status_v6,10000222,1") in new stack | ||
+ | -- Goto (DIALPLAN-APPLICATION-1C_Set_Status_v6,10000222,1) | ||
+ | -- Executing [10000222@miko_ajam:1] AGI("SIP/104-000000d0", "1C_Set_Status_v6.php") in new stack | ||
+ | -- Launched AGI Script /etc/asterisk/agi-bin/1C_Set_Status_v6.php | ||
+ | -- AGI Script Executing Application: (UserEvent) Options: (DB_CF,Channel:SIP/104,key:104,val:79257184222) | ||
+ | -- AGI Script Executing Application: (NoCDR) Options: ()</code> | ||
+ | |||
+ | Пример ответа AMI: | ||
+ | <code>Event: UserEvent | ||
+ | Privilege: user,all | ||
+ | UserEvent: DB_CF | ||
+ | Uniqueid: askozia-1403173508.682 | ||
+ | Channel:SIP/104 | ||
+ | key:104 | ||
+ | val:79257184222</code> | ||
+ | |||
+ | Окончательная проверка: | ||
+ | <code>CLI> database get CF 104 | ||
+ | Value: 79257184222</code> | ||
+ | |||
+ | ==== Получения значений из AstDB ==== | ||
<code>#!/bin/sh | <code>#!/bin/sh | ||
Строка 167: | Строка 241: | ||
asterisk -rvvv; | asterisk -rvvv; | ||
</code> | </code> | ||
+ | |||
+ | Пример вывода в CLI: | ||
+ | <code> -- Executing [10000222@miko_ajam:1] NoOp("SIP/104-000000d3", "miko_ajam calling application: 1C_Set_Status") in new stack | ||
+ | -- Executing [10000222@miko_ajam:2] Set("SIP/104-000000d3", "CDR(miko_ajamCalleridNum)=10000222") in new stack | ||
+ | -- Executing [10000222@miko_ajam:3] Goto("SIP/104-000000d3", "miko_ajam,10000222,1") in new stack | ||
+ | -- Goto (miko_ajam,10000222,1) | ||
+ | -- Executing [10000222@miko_ajam:1] AGI("SIP/104-000000d3", "miko_ajam.php") in new stack | ||
+ | -- Launched AGI Script /etc/asterisk/agi-bin/miko_ajam.php | ||
+ | -- AGI Script Executing Application: (UserEvent) Options: (FromCF,Channel:SIP/104,Lines:/CF/104@.@79257184222.....1resultsfound.) | ||
+ | -- AGI Script Executing Application: (NoCDR) Options: () | ||
+ | </code> | ||
+ | Пример ответа AMI: | ||
+ | <code>Event: UserEvent | ||
+ | Privilege: user,all | ||
+ | UserEvent: FromCF | ||
+ | Uniqueid: askozia-1403173871.684 | ||
+ | Channel:SIP/104 | ||
+ | Lines:/CF/104@.@79257184222...../CF/100@.@79257184100...../CF/101@.@79257184101</code> | ||
+ | |||
+ | Аналог команды CLI: | ||
+ | <code>askoziapbx*CLI> database show CF | ||
+ | /CF/104 : 79257184222 | ||
+ | 1 results found.</code> |