Ответы пользователя по тегу Asterisk
  • Отправка почтовых уведомлений о пропущенных звонках внутренним абонентам?

    я вот через mutt отправляю.
    Ответ написан
    Комментировать
  • Почему происходит долгое переключение между контекстами и обрыв звонка в Asterisk?

    Bug87
    @Bug87 Автор вопроса
    Проблему решил исправлением ошибок в плане набора.
    Ответ написан
    Комментировать
  • Как воспроизвести анонс используя API Originate?

    Bug87
    @Bug87 Автор вопроса
    Ваше решение не подошло.
    Вот правильное решение!

    В PHP файле:
    $strChannel = "SIP/xxx"; // внутренний номер менеджера с которым будет происходить соединение
    
    $strContext = "directoutbound"; //контекст исходящих звонков (у вас может быть и другой)
    
    $strWaitTime = "30";
    $strPriority = "1";
    $strMaxRetry = "2";
    
    $strExtenNonCanonical = $_POST['txtphonenumber']; //формирование номера из переменных
    $trash = array("(", ")", "-", "");
    $strreplace = array("", "", "", "");
    
    $strExten = "10".str_replace($trash, $strreplace, $strExtenNonCanonical); //важный момент! Я добавил префикс 10 для корректной обработки в диалплане. Так как мой контекст обрабатывает все варианты исходящих звонков.
    
    $length = strlen($strExten);
    $strCallerId = preg_replace('/^10/', '', $strExten); //для корректного отображения callerid, я убрал префикс 10 из $strExten
    
    
    if ($length >= 7 && is_numeric($strExten))
                                  {
                                  $oSocket = fsockopen($strHost, 12234, $errnum, $errdesc) or die("Connection to host failed");
                                  fputs($oSocket, "Action: login\r\n");
                                  fputs($oSocket, "Events: off\r\n");
                                  fputs($oSocket, "Username: $strUser\r\n");
                                  fputs($oSocket, "Secret: $strSecret\r\n\r\n");
                                  fputs($oSocket, "Action: originate\r\n");
                                  fputs($oSocket, "Channel: $strChannel\r\n");
                                  fputs($oSocket, "WaitTime: $strWaitTime\r\n");
                                  fputs($oSocket, "CallerId: $strCallerId\r\n");
                                  fputs($oSocket, "Exten: $strExten\r\n");
                                  fputs($oSocket, "Context: $strContext\r\n");
                                  fputs($oSocket, "Priority: $strPriority\r\n\r\n");
                                  fputs($oSocket, "Action: Logoff\r\n\r\n");
                                  sleep (1);
                                  fclose($oSocket);
                                  ?>
                                  <p>
                                  </p>
                                  <?


    В диалплане:
    ;##### Обработка звонков с сайта #####
    exten => _10ZXXXXXXXXXX,1,NoOp(webCalling)
     same => n,Playback(webcall)
     same => n,Dial(SIP/TR/${EXTEN:2},,T)
     same => n,Hangup()


    Данное решение позволяет использовать обратный звонок с нескольких сайтов используя разные префиксы и гибко управлять звонком в диалплане.

    HTML всплывающего окна описывать не буду. Тут уже сами.
    Ответ написан
    Комментировать
  • Как построить стенд для изучения Asterisk?

    Изучив теорию, собрав тестовый сервер и немного набив шишки на стенде рекомендую переходить к боевой машине и решать уже реальные и повседневные задачи. Работаю с Asterisk полгода после прохождения "курса молодого бойца" :) Реальный опыт набивается только на реальных задачах. В Asteriske очень много шаманства и подводных камней, которые с первого взгляда не видно. Чем интересней и сложней задача, тем выше будет полученный опыт. Старайтесь постоянно оптимизировать конфиги. Избегайте копи-паста в диалплане.
    Ответ написан