Вы не авторизованы

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

RSS
Статус пользователей., При загрузке панели Мико.
 
Здравствуйте!


Подскажите, пожалуйста! Мне нужно понять, с чем это может быть связано: при перезагрузке 1с(или перезагрузке самой панели) панель мико отображает всех пользователей станции в статусе онлайн. Все налаживается, например после core reload. - в панель прилетают Внешнее событие:  <generic event="ExtensionStatus"  и все пользователи получают верные значения статусов, и далее все тоже вроде хорошо, происходит смена при снятии/установлении регистрации.
 
Цитата
TitkovEnergy@protonmail.com написал:
Здравствуйте!


Подскажите, пожалуйста! Мне нужно понять,  с чем это может быть связано : при перезагрузке 1с(или перезагрузке самой панели) панель мико отображает  всех  пользователей станции в статусе онлайн. Все налаживается, например после core reload. - в панель прилетают   Внешнее событие:  <generic event="ExtensionStatus"    и все пользователи получают верные значения статусов, и далее все тоже вроде хорошо, происходит смена при снятии/установлении регистрации.
какая АТС используется?
core show hints
отображает верную информацию?
 
Цитата
Портнов Алексей написал:

какая АТС используется?
core show hints
отображает верную информацию?
Asterisk 16

core show hints - да, разумеется, показывает. В отладочных сообщениях панели я видел, что при загрузке панели она получает их в духе:
Код
Внешнее событие:  <generic opaque_data="    -= Registered Asterisk Dial Plan Hints =- 1015@ext-local      : SIP/1015              State:Unavailable     Presence:not_set         Watchers  0 1014@ext-local      : SIP/1014              State:Unavailable     Presence:not_set         Watchers  0 1017@ext-local      : SIP/1017              State:Unavailable     Presence:not_set         Watchers  0 1016@ext-local      : SIP/1016              State:Unavailable     Presence:not_set         Watchers  0 1011@ext-local      : SIP/1011              State:Unavailable     Presence:not_set         Watchers  0 1010@ext-local      : SIP/1010              State:Unavailable     Presence:not_set         Watchers  0 1013@ext-local      : SIP/1013              State:Unavailable     Presence:not_set         Watchers  0 1501@ext-local      : SIP/1501              State:Unavailable     Presence:not_set         Watchers  0 1012@ext-local      : SIP/1012              State:Unavailable     Presence:not_set         Watchers  0 1502@ext-local      : SIP/1502              State:Unavailable     Presence:not_set         Watchers  0 1019@ext-local      : SIP/1019              State:Unavailable     Presence:not_set         Watchers  0 1507@ext-local      : SIP/1507              State:Unavailable     Presence:not_set         Watchers  1 1506@ext-local      : SIP/1506              State:Unavailable     Presence:not_set         Watchers  1 1509@ext-local      : 

Однако, я так же заметил(в сравнении с 11 версией Астериска), что здесь в выводе hints столбец новый отображается Presence:not_set
Возможно это ломает парсер панели на стороне 1C?

Панель у нас не особо свежая, 1.2.24.8, но прежде всего нужно локализовать проблему.

Благодарю за содействие.
 
Приложите логи панели телефонии в период переподключения:
https://telefon.miko.ru/forum/forum18/topic851/messages/messages/


Тут проблема в статусах, что панель получает.
 
Цитата
Портнов Алексей написал:

Тут проблема в статусах, что панель получает.
Вы имеете ввиду что-то более глобальное, "10000111. Настройка передачи общих параметров системы из Asterisk" - ?

Отладочные сообщения панели при перезагруке: https://pastebin.com/raw/A0HMGr6y
Изменено: Eduard I. Titkov - 15.03.2021 10:22:08
 
Цитата
Портнов Алексей написал:
Приложите логи панели телефонии в период переподключения:
https://telefon.miko.ru/forum/forum18/topic851/messages/messages/

Здравствуйте, посмотрите? https://pastebin.com/raw/A0HMGr6y
 
Проблема в том, что используется asterisk 16.
Для него изменился подход к получению информации о хинтах.
Можно использовать в 10000111 следующий скрипт AGI (и только его после Answer()):
Код
#!/usr/bin/php -q
<?php
function normalize_hint(&$str){
    $hint_val = '';
    $arr_val = explode('&', $str);
    foreach ($arr_val as $val){
        if( strrpos($val, 'SIP/') === FALSE &&
            strrpos($val, 'PJSIP/') === FALSE &&
            strrpos($val, 'IAX2/') === FALSE &&
            strrpos($val, 'DAHDI/') === FALSE){
            continue;
        }

        if($hint_val != '') $hint_val.='&';
        $hint_val.=$val;
    }
    $str = $hint_val;
}

$agi = new AGI();

// Получение переменной AGI канала
//   
function GetVarChannnel($agi, $_varName){
  $v = $agi->get_variable($_varName);
  if(!$v['result'] == 0){
    return $v['data'];
  }
  else{
    return "";
  }
} // GetVarChannnel($_agi, $_varName)

$Chan            = GetVarChannnel($agi, "v1");;
$pt1cusemp3player = GetVarChannnel($agi, "pt1cusemp3player");;

$attr_name = "chan1c";

$DialplanVer    = "1.0.0.6";
$GSVER          = trim(substr(exec("gs -v"),15,4));
$FaxSendUrl     = "80/admin/1c/upload/index.php";
$Statistic     = "";
$SkypeContext   = "";
$DefaultContext = "from-internal";

$agi->exec("UserEvent",   "AsteriskSettings"
    .",{$attr_name}:{$Chan}"
    .",FaxSendUrl:$FaxSendUrl"
    .",DefaultContext:$DefaultContext"
    .",SkypeContext:$SkypeContext"
    .",DialplanVer:$DialplanVer"
    .",autoanswernumber:**"
    .",Statistic:$Statistic"
    .",GhostScriptVer:$GSVER"
    ."$pt1cusemp3player");


$arr_hints = array();
$context = 'ext-local';
exec("asterisk -rx\"core show hints\" | grep -v '^_' | grep '{$context}' | awk -F'([ ]*[:]?[ ]+)|@' ' {print $1\"@{$context}\" \"@.@\" $3 \"@.@\" $4 } '", $arr_hints);
$result = ''; $count  = 1;
foreach ($arr_hints as $hint_row){
    if(substr($hint_row, 0, 1) === '*'){
        // Старкоды отсекаем.
        continue;
    }
    $row_data = explode('@.@', $hint_row);
    if(count($row_data) <3){
        // Битая строка.
        continue;
    }
    normalize_hint($row_data[1]);
    $hint_row = implode('@.@', $row_data);
    if(strrpos($row_data[1], '/') === FALSE) {
        // Не корректное имя канала, это вероятно виртуальное устройство.
        continue;
    }
    if($count >= 10){
        $agi->exec("UserEvent", "RowsHint,chan1c:{$attr_name}:{$Chan},Lines:{$result}");
        $result = ''; $count = 1;
    }
    $result .= trim($hint_row).'.....';
    $count++;
}
if($result!==''){
    $agi->exec("UserEvent", "RowsHint,chan1c:{$attr_name}:{$Chan},Lines:{$result}");
}
$agi->exec("UserEvent", "HintsEnd,chan1c:{$attr_name}:{$Chan}");

// отклюаем запись CDR для приложения
// $agi->exec("NoCDR", "");
// ответить должны лишь после выполнения всех действий
$agi->answer();
 
Алексей, большое спасибо! Искренне благодарю.
Читают тему