Cursos Asterisk en México

Click2Call AMI , Contextos y Custom File Name

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Click2Call AMI , Contextos y Custom File Name

    Buenas noches, espero este sea el foro correcto para hacer la pregunta, les expongo la situación espero puedan retroalimentar

    1.- Tengo un script en PHP que genera por medio de funciones AMI una llamada y la regresa a una extensión , esto para ser integrado en un sistema web y que pueda usarse como Click y llamar (click2call)

    2.- En ese script llamo por medio de AMI a el contexto from-internal, para que el telefono use las reglas de marcado definidas y no tener que hacer ningun cambio

    La situación que se me presenta es la siguiente:

    Yo puedo por medio de la aplicacion web enviar al click2call mas parametros como nombre de usuario, cliente etc, mi intención es pasarlo a un context nuevo y de ahi recibir las variables para grabar la llamada formando un nombre de archivo personalizado el cual me permita identificar en el mismo nombre que y quien hizo la llamada

    Se que se puede usar la funcion del patron de marcado MixMonitor y antes definir por medio de Set() el nombre de la variable que recibirar el Mixmonitor.

    El problema que no logro resolver es como pasarle al AMI las variables desde el script de php click2call para enviarlas al contexto y formar el nombre del archivo y generar la llamada.

    Espero haber sido claro

    Anexo Ejemplos del click2call por si a alguien le son utiles

    Haber si alguien me da una idea

    Código:
        /Script : click2call.php
        // usar pasando parametros phone = telefono a marcar
        // y exten = a extension a transferir la llamada
        // se usa via web hay que generar una url
        // http://serverasterisk/click2web.php?phone=XXXXXXX&exten=XXX
        // usa tecnologia AMI para llamar directamente al PBX
    
        if (!empty( $_REQUEST['phone'])   && !empty( $_REQUEST['exten']  ) )
        {
                $num = $_REQUEST['phone'];
                $ext = $_REQUEST['exten'];
                $num = preg_replace( "/^\+7/", "8", $num );
                $num = preg_replace( "/\D/", "", $num );
         
                if ( ! empty( $num ) )
                {
                        echo "Dialing $num\r\n";
         
                        $timeout = 10;
                        $asterisk_ip = "127.0.0.1";
         
                        $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
                        fputs($socket, "Action: Login\r\n");
                        fputs($socket, "UserName: admin\r\n");
                        fputs($socket, "Secret: contrasenia\r\n\r\n");
         
                        $wrets=fgets($socket,128);
         
                        echo $wrets;
         
                        fputs($socket, "Action: Originate\r\n" );
                        fputs($socket, "Channel: Local/$ext@from-internal\r\n" );
                        fputs($socket, "Exten: $num\r\n" );
                        fputs($socket, "Context: from-internal\r\n" );
                        fputs($socket, "Priority: 1\r\n" );
                        fputs($socket, "Async: yes\r\n" );
                        fputs($socket, "WaitTime: 15\r\n" );
                        fputs($socket, "Callerid: $num\r\n\r\n" );
         
                        $wrets=fgets($socket,128);
                        echo $wrets;
                }
                else
                {
                        echo "Unable to determine number from (" . $_REQUEST['phone'] . ")\r\n";
                }
        }
        else
        {?>Please enter a number to dial.

  • #2
    Usa el campo de Variable cuando envias el originate:
    Código:
    fputs($socket, "Action: Originate\r\n" );
                        fputs($socket, "Channel: Local/$ext@from-internal\r\n" );
                        fputs($socket, "Exten: $num\r\n" );
                        fputs($socket, "Context: from-internal\r\n" );
                        fputs($socket, "Priority: 1\r\n" );
                        fputs($socket, "Async: yes\r\n" );
                        fputs($socket, "WaitTime: 15\r\n" );
                        fputs($socket, "Variable: var1=1|var2=2|var3=3\r\n");
                        fputs($socket, "Callerid: $num\r\n\r\n" );
    y así puedes asignar el valor de hasta 32 variables que estarán disponibles para tu canal.
    dCAP Christian Cabrera R.
    Para aprender a usar Asterisk, asiste a uno de mis cursos Asterisk
    Si deseas asesoría pagada, por favor contáctame

    Comentario


    • #3
      Christian

      Gracias por el tip , me queda claro que no estaba ya tan lejos , ademas solo necesito pasar como 4 o 5 variables, el context puede ser el que al final solo realize el monitor con el las variables ?

      Te anexo ejemplo que voy a probar
      Código:
      [contexto-especial]
      exten=>_X,1,Ansewer
      exten=>_X,n,Wait(1)
      exten=>_X,n,Set(NOMBRE=${usuario}-${cliente}-${EXTEN})
      exten=>_X,n,Monitor(wav,{NOMBRE})
      exten=>_X,n,Hangup

      Comentario

      Principales Usuarios Activos

      Colapsar

      No hay usuarios activos superiores.
      Trabajando...
      X