Conectar un sistema Asterisk a la red telefónica pública conmutada

En dos artículos anteriores, aprendió cómo configurar dos teléfonos SIP y el plan de marcación de Asterisk para permitir que los teléfonos se llamen entre sí. Es bueno tener dos teléfonos que puedan llamarse entre sí, pero la mayoría de las organizaciones desean conectar su sistema telefónico al red telefónica pública conmutada (PSTN) para permitir llamadas entrantes y salientes a otras personas fuera de la organización. En este artículo descubrirás cómo conectarte a la PSTN y verás la configuración de Asterisk necesaria para esta conectividad.

Notar: Lo he mencionado varias veces a lo largo de esta serie, pero comprender cómo proteger su sistema telefónico es especialmente importante para este artículo. Conectarse a un proveedor de telefonía puede exponerlo a todo tipo de problemas, como fraude telefónico, si no tiene cuidado de controlar quién puede conectarse a su sistema telefónico (por ejemplo, a través de reglas de firewall) . Asegúrese de leer el README-SERIOUSLY.bestpractices.md documentación provista con el código fuente de Asterisk y comprenda cada elemento de configuración que agregue a Asterisk.

Índice

    Conexión a PSTN

    Obtener un número de teléfono y conectar su sistema telefónico a la PSTN puede parecer una tarea difícil, pero en realidad es bastante fácil. Las organizaciones más grandes pueden optar por utilizar un proveedor de telecomunicaciones local o su compañía local de Internet, pero también hay una variedad de proveedores en línea disponibles (por ejemplo, Twilio y VoIP.ms, Entre muchos otros). Usaré VoIP.ms para los números de teléfono de este artículo.

    No importa cuál elija, el proceso es bastante simple. Comprará un número de teléfono (a menudo llamado marcación interna directa o DID) y configurará su sistema telefónico para conectarse al sistema telefónico del proveedor a través de SIP. Esta configuración a menudo se llama . El proceso de configuración de su sistema telefónico para que funcione con su proveedor elegido puede variar, por lo que siempre es mejor consultar la documentación del proveedor o trabajar con sus ingenieros de voz si tiene algún problema.

    Echemos un vistazo a algunas de las mejores prácticas generales para configurar su servicio telefónico. Estos no son exhaustivos, pero deberían proporcionar una base para un buen consejo cuando trabaje con su proveedor:

    • Obtenga la dirección IP (o direcciones IP) del extremo del proveedor y restrinja fuertemente las comunicaciones SIP y RTP solo a esas direcciones IP. Algunos proveedores también admiten la conexión de su cuenta solo desde una lista específica de direcciones IP.
    • Asegúrese de que su conexión SIP use al menos un nombre de usuario y contraseña por seguridad. Si su proveedor admite la autenticación TLS mutua, considere esa opción también.
    • No se registre para funciones que no necesita. Si no realiza llamadas internacionales, no se registre para llamadas internacionales. Esto reduce su superficie de ataque en caso de una brecha en su sistema telefónico. El fraude telefónico puede ser costoso. Puede evitar el riesgo de costosas llamadas internacionales desactivando las llamadas internacionales.
    • Investigue las opciones de detección y prevención de fraude disponibles para su proveedor. Algunos proveedores pueden alertarlo de inmediato si detectan llamadas telefónicas sospechosas realizadas desde su cuenta.

    Configuración de PJSIP

    El primer paso para configurar la conectividad PSTN es definir la configuración SIP necesaria para que Asterisk se comunique con el proveedor de telefonía IP. Esta información varía un poco según el proveedor, pero muchos brindan información sobre la configuración que necesita (VoIP.ms en realidad proporciona Instrucciones específicas de Asterisk):

    En mi caso, la configuración en /etc/asterisk/pjsip.conf Se ve como esto:

    [voipms]
    type=endpoint
    transport=transport-udp
    context=inbound-calls
    disallow=all
    allow=ulaw
    auth=voipms
    outbound_auth=voipms
    aors=voipms
    
    [voipms]
    type=registration
    transport=transport-udp
    outbound_auth=voipms
    client_uri=sip:redacted VoIP.ms username@newyork1.voip.ms:5060
    server_uri=sip:newyork1.voip.ms:5060
    
    [voipms]
    type=auth
    auth_type=userpass
    username=redacted VoIP.ms username
    password=redacted VoIP.ms password
    
    [voipms]
    type=aor
    contact=sip:redacted VoIP.ms username@newyork1.voip.ms
    
    [voipms]
    type=identify
    endpoint=voipms
    match=newyork1.voip.ms
    

    La mayor parte de esta configuración probablemente parezca familiar, pero esta configuración presenta dos nuevos tipos de sección PJSIP: a y an . el registration le dice a Asterisk que se registre explícitamente con el servidor del proveedor de voz ascendente. el identify le dice a Asterisk que el tráfico SIP de newyork1.voip.ms debe coincidir con el voipms punto final.

    Después de recargar PJSIP, puedo ver que mi servidor Asterisk local se ha registrado con éxito en la infraestructura SIP del proveedor. Tenga en cuenta que los problemas durante esta etapa del proceso son bastante comunes y es posible que deba trabajar con su proveedor para comprender lo que "ven" para que pueda solucionar los problemas de manera efectiva:

    asterisk-1*CLI> pjsip show registrations
    
    <Registration/ServerURI..............................> <Auth..........> <Status.......>
    ==========================================================================================
    
    voipms/sip:newyork1.voip.ms:5060                  voipms            Registered
    
    Objects found: 1
    

    Configuración del plan de marcación entrante

    A continuación, Asterisk necesita saber qué hacer con las llamadas entrantes y salientes. Las llamadas entrantes y salientes en Asterisk no son lujosas, son solo extensiones en el plan de marcación como cualquier otra extensión. Primero hablaré de las llamadas entrantes. Como cualquier lenguaje de programación, es importante comprender cuáles son sus objetivos antes de comenzar a escribir código. En mi caso, quería un plan de marcación que:

    1. Contestar una llamada entrante del DID que compré de mi proveedor.
    2. Permita que el usuario ingrese una extensión (una para Alice, dos para Bob).
    3. Llame al usuario apropiado una vez que se haya marcado la extensión.

    Tenga en cuenta que en la configuración de PJSIP anterior, estoy usando el inbound-calls contexto para llamadas de mi proveedor SIP. Así es como se ve ese contexto en /etc/asterisk/extensions.conf:

    [inbound-calls]
    
    exten => 1234567890,1,Answer()
    same => n,Playback(hello)
    same => n,WaitExten(30)
    same => n,Hangup()
    
    exten => 1,1,Answer()
    same => n,Dial(PJSIP/alice-softphone)
    
    exten => 2,1,Answer()
    same => n,Dial(PJSIP/bob-softphone)
    

    Tenga en cuenta que reemplacé mi DID real con el falso 1234567890 por razones de privacidad. Querrá usar su DID real si está rastreando. También tenga en cuenta que mi número de teléfono sigue una convención de marcado de los Estados Unidos (un código de área de tres dígitos seguido de un número de siete dígitos).

    Repasemos juntos el contenido de esta configuración:

    1. Cuando se llama a mi DID, Asterisk es la extensión 1234567890. Contesta la llamada.
    2. Asterisk luego reproduce un mensaje incrustado de "hola". En un entorno en vivo, es posible que desee registrar sus propios avisos para que los use Asterisk.
    3. Asterisk entonces llama al Aplicación WaitExten con un valor de 30. Este valor le dice a Asterisk que espere hasta 30 segundos para que el usuario ingrese una extensión.
    4. Suponiendo que el usuario ingresa una extensión de "1" o "2", el plan de marcación saltará a esa extensión. Tenga en cuenta que la extensión "1" llamará al softphone de Alice y la extensión "2" llamará al softphone de Bob.

    Una vez que la configuración anterior esté en su lugar, puede volver a cargar el plan de marcación y realizar una llamada de prueba a su número de teléfono PSTN. Debería escuchar a Asterisk decir "hola", y debería poder marcar una de las extensiones y hacer que el teléfono suene en el otro extremo.

    Configuración del plan de marcación saliente

    Ser capaz de hacer llamadas entrantes es excelente, pero la mayoría de las empresas esperan también la funcionalidad de llamadas salientes. Afortunadamente, es bastante fácil de configurar.

    Primero, recuerde del artículo anterior sobre llamadas dentro de la oficina que las llamadas salientes a los teléfonos de Alice y Bob entran en el plan de marcación en el office-phones El contexto. Por lo tanto, necesitamos una forma de hacer coincidir todas las llamadas salientes en este contexto y enviarlas al proveedor ascendente.

    Hasta ahora, ha visto extensiones configuradas como coincidencias exactas. La extensión 1001 coincide y marca a Alice, la extensión 1002 coincide y marca a Bob, y la extensión de su DID entrante coincide y permite que la persona que llama ingrese una selección. Obviamente, sería imposible hacer coincidir todos los posibles números salientes que un usuario podría marcar. Afortunadamente, Asterisk proporciona una manera de realizar la coincidencia de patrones.

    Para proporcionar llamadas salientes a números de EE. UU., por ejemplo (123) 456-7890, mi office-phones el contexto se ve así:

    [office-phones]
    
    exten => 1001,1,Dial(PJSIP/alice-softphone)
    
    exten => 1002,1,Dial(PJSIP/bob-softphone)
    
    exten => 9000,1,Answer()
    same => n,Playback(hello-world)
    same => n,Hangup()
    
    exten => _XXXXXXXXXX,1,Set(CALLERID(all)="Anthony Critelli <1234567890>")
    same => n,Dial(PJSIP/${EXTEN}@voipms)
    

    Si alguna vez ha mirado la documentación de coincidencia de patrones vinculados de Asterisk Wiki, esta sintaxis le resultará familiar. La extensión saliente coincide _XXXXXXXXXX, que es una forma elegante de decir "Reconocer una secuencia de 10 dígitos". El guión bajo indica que este carácter es el comienzo de una coincidencia de patrón, similar al uso de la barra diagonal (/) en muchos lenguajes de programación para indicar el uso de una expresión regular. Por lo tanto, esta extensión coincidirá con cualquier extensión de 10 dígitos que le envíe, como números de teléfono estándar de EE. UU. de 10 dígitos. Un ejemplo más completo también tendría en cuenta los códigos de países, las llamadas locales y otras consideraciones. Este es un ejercicio que se deja al lector.

    La primera prioridad en esta extensión define la CALLERID a un canal de mi elección. Debe reemplazar el nombre y el número con su propio nombre y DID. Esta práctica también introduce otro concepto en el dialplan de Asterisk: el uso de variables. En la configuración anterior, los dos CALLERID y EXTEN son variables que puedes manipular.

    La segunda y última prioridad de la extensión simplemente envía la llamada al proveedor ascendente a través del controlador de canal PJSIP. Esta sintaxis es bastante simple y muy similar al plan de marcación que ya escribió para permitir que dos teléfonos se llamen entre sí.

    Con esta configuración en su lugar, puede recargar su plan de marcación e intentar realizar una llamada saliente de prueba desde el teléfono de Alice o Bob. Suponiendo que todo salió bien, su llamada debería realizarse.

    Envoltura

    Si se quedó conmigo desde el principio, entonces ha implementado con éxito un sistema telefónico básico utilizando el PBX de Asterisk de código abierto. Usted ha recorrido un largo camino. Desde comprender los conceptos básicos de VoIP y Asterisk hasta instalar y configurar Asterisk desde cero, ahora debería tener una idea de cómo configurar un sistema telefónico simple. Como mínimo, espero que esta serie haya despertado su interés en aprender más sobre telefonía y Asterisk.

    Si desea continuar su viaje de VoIP y Asterisk, le recomiendo consultar estos recursos:

    • el Documentación oficial de Asterisk es invaluable al aprender, configurar y solucionar problemas de Asterisk.
    • es una excelente y completa introducción a todas las características de Asterisk.
    • Vídeos de AstriCon, la conferencia de usuarios de Asterisk, puede ayudar a generar ideas para proyectos de telefonía.
    • el Tiburón alambre el analizador de paquetes tiene un tesoro de utilidad para analizar las llamadas telefónicas. Estos incluyen escalas de llamadas, análisis de tráfico e incluso reproducción de medios.
    • Finalmente, si desea comprender los protocolos fundamentales que admiten las redes VoIP, debe consultar el RFC de IETF para una inmersión técnica profunda. Hay muchos RFC relacionados con VoIP, pero los RFC SIP, SDP y RTP/RTCP son buenos lugares para comenzar.

    Artículos de interés

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Si continuas utilizando este sitio aceptas el uso de cookies. Más información