Инструменты пользователя

Инструменты сайта


faq:queue_dynamic_agents

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
faq:queue_dynamic_agents [2020/03/11 11:31]
Портнов Алексей
faq:queue_dynamic_agents [2021/02/26 13:15] (текущий)
Портнов Алексей
Строка 2: Строка 2:
 [[:​faq|Обратно,​ к основному разделу... ]] [[:​faq|Обратно,​ к основному разделу... ]]
  
 +<note warning>​Актуально для версии **2021.1.38+**</​note>​
 Периодически возникает необходимость добавлять и удалять сотрудников из очереди. До сих пор это было возможно сделать только через web интерфейс телефонной станции. ​ Периодически возникает необходимость добавлять и удалять сотрудников из очереди. До сих пор это было возможно сделать только через web интерфейс телефонной станции. ​
  
Строка 8: Строка 9:
   - Создайте новую очередь с четырехзначным внутренним номером. К примеру **2001**. (см. документацию "​[[:​call-queues|Очереди вызовов]]"​)   - Создайте новую очередь с четырехзначным внутренним номером. К примеру **2001**. (см. документацию "​[[:​call-queues|Очереди вызовов]]"​)
   - Опишите новое "​**Приложение ​ диалплан**"​ {{ :​faq:​statuses_pt1c_5.jpg |}}   - Опишите новое "​**Приложение ​ диалплан**"​ {{ :​faq:​statuses_pt1c_5.jpg |}}
-  - Назначьте "​**Номер для вызова приложения**"​ - **999[0-1]XXXX** первые три цифры можете переопределись своей комбинацией +  - Назначьте "​**Номер для вызова приложения**"​ - **999XXXXX** первые три цифры можете переопределись своей комбинацией 
-  - Тип кода - "**PHP AGI скрипт**"​ {{ :faq:q_statuses_pt1c_1.jpg |}}+  - Тип кода - "**PHP AGI скрипт**"​ {{ :faq:q_dynamic_agents.png?​nolink ​|}}
   - На вкладке "​**Программный код**"​ вставьте следующее содержимое:​ <​code><?​php   - На вкладке "​**Программный код**"​ вставьте следующее содержимое:​ <​code><?​php
-require_once '​globals.php'​+ 
-require_once 'phpagi.php';+use MikoPBX\Common\Models\CallDetailRecordsTmp; 
 +use MikoPBX\Common\Models\CallQueueMembers;​ 
 +use MikoPBX\Common\Models\CallQueues;​ 
 +use MikoPBX\Common\Models\Extensions;​ 
 +use MikoPBX\Core\Asterisk\AGI;​ 
 +use MikoPBX\Core\Asterisk\Configs\QueueConf;​ 
 + 
 +require_once 'Globals.php';
  
 $agi = new AGI(); $agi = new AGI();
Строка 26: Строка 34:
 $agi->​noop("​$extension $q_exten $add_agent"​);​ $agi->​noop("​$extension $q_exten $add_agent"​);​
  
-$res = Models\Extensions::​findFirst("​number='​{$extension}'"​);​+$res = Extensions::​findFirst("​number='​{$extension}'"​);​
 if(!$res){ if(!$res){
     // Ошибка,​ такого внутреннего номера не существует.     // Ошибка,​ такого внутреннего номера не существует.
     $agi->​hangup();​     $agi->​hangup();​
 } }
-/** @var Models\CallQueues $res */ +$res = CallQueues::​findFirst("​extension='​{$q_exten}'"​);​
-$res = Models\CallQueues::​findFirst("​extension='​{$q_exten}'"​);​+
 if(!$res){ if(!$res){
     // Ошибка,​ такой очереди не существует.     // Ошибка,​ такой очереди не существует.
     $agi->​hangup();​     $agi->​hangup();​
 } }
-/** @var Models\CallQueueMembers $res */ +$a_count = CallQueueMembers::​maximum([ "​queue='​{$res->​uniqid}'",​ '​column'​ => '​priority'​] ) + 1; 
-$a_count = Models\CallQueueMembers::​maximum([ "​queue='​{$res->​uniqid}'",​ '​column'​ => '​priority'​] ) + 1; +$member ​ = CallQueueMembers::​findFirst("​queue='​{$res->​uniqid}'​ AND extension='​{$extension}'"​);​
-$member ​ = Models\CallQueueMembers::​findFirst("​queue='​{$res->​uniqid}'​ AND extension='​{$extension}'"​);​+
  
-if($add_agent == true && !$member){ +if($add_agent === '​1' ​&& !$member){ 
-    $member = new Models\CallQueueMembers();​+    $member = new CallQueueMembers();​
     $member->​extension ​ = $extension;     $member->​extension ​ = $extension;
     $member->​queue ​     = $res->​uniqid;​     $member->​queue ​     = $res->​uniqid;​
     $member->​priority ​  = $a_count;     $member->​priority ​  = $a_count;
     $member->​save();​     $member->​save();​
-    ​$result = p_Queue::queue_reload();+    ​QueueConf::queueReload();
 } }
  
 if($add_agent == false && $member){ if($add_agent == false && $member){
     $member->​delete();​     $member->​delete();​
-    ​$result = p_Queue::queue_reload();+    ​QueueConf::queueReload();
 } }
  
 $linkedid = $agi->​get_variable("​CDR(linkedid)",​ true); $linkedid = $agi->​get_variable("​CDR(linkedid)",​ true);
-$res = Models\CallDetailRecordsTmp::​find("​linkedid='​{$linkedid}'"​);​+$res = CallDetailRecordsTmp::​find("​linkedid='​{$linkedid}'"​);​
 foreach ($res as $data){ foreach ($res as $data){
     $data->​delete();​     $data->​delete();​
faq/queue_dynamic_agents.txt · Последние изменения: 2021/02/26 13:15 — Портнов Алексей