Hay bastantes ejemplos de personalización en Internet. Pero ninguno de ellos trabajó para mí como debería. Uno de los problemas que encontré fue la definición incorrecta de la línea con una llamada entrante. En un momento, nunca encontré un manual para resolver este problema. Por lo tanto, decidí publicar mi versión de las instrucciones aquí. Al mismo tiempo, y una cuna para ti para el futuro.
Configuración de GoIP
"Configuraciones" - "Preferencias"
La puerta de enlace GSM se encuentra en una red de área local sin acceso a Internet. Configure un servidor NTP en la red local para distribuir el tiempo. Al reiniciar, la puerta de enlace GSM se sincroniza y muestra correctamente la hora actual. Puede omitir este paso, luego deberá configurar manualmente la hora en la puerta de enlace. Si tiene acceso a Internet, especifique uno de los servidores NTP públicos.
- En Time Server, escriba la dirección IP del servidor NTP.
- Especifique la zona horaria, tengo Zona horaria: GMT + 6.
- Deshabilitar reinicio automático. Con la última versión de firmware, no se observan problemas con la congelación de la puerta de enlace GSM.
- Desactivar IVR.

"Configuraciones" - "Red"
- Puerto LAN - IP estática
- Dirección IP: especifique la dirección IP estática de la puerta de enlace
"Configuraciones" - "VoIP básica"
Modo de configuración: configuración por línea.
Para el primer canal donde “Prefijo de enrutamiento de línea 1” especificamos 1, para el segundo 2, el tercero 3, etc.
ID de autenticación: registre el número de tarjeta SIM (lo tengo registrado sin 8 / + 7), por ejemplo 9651234567
Servidor de registrador SIP: dirección IP del servidor SIP (192.168.0.10)
Line 1 Authentication ID: 9651234567 Password: Routing Prefix: 1 Sip Proxy: SIP Registrar Server: 192.168.0.10:5160 Phone Nymber: 9651234567 Display Name: 9651234567
Hacemos lo mismo con el resto de las líneas.

"Configuraciones" - "VoIP avanzado"

"Configuraciones" - "Llamar"
Para cada línea, especifique el prefijo que viene con Asterisk y se eliminará en el canal de la puerta de enlace antes de hacer una llamada saliente: por ejemplo, para el Plan de marcado CH1: 1: -1, el Plan de marcado CH2: 2: -2, etc.
Dial Plan: 1:-1

"Configuraciones" - "Llamar"
Las instrucciones de configuración recomiendan el modo de reenvío de CID: seleccione Usar CID como identificador de llamadas SIP para determinar correctamente el número entrante. He seleccionado Usar Id. De fiesta remota. Esto se hizo para determinar correctamente la línea con la que llegó la llamada. El número entrante se determina correctamente.

Esto completa la configuración de GoIP.
Configurar FreePBX 14
Conexiones - Troncales
Seleccione "Agregar troncal SIP (chan_sip)".
Pestaña General

Vaya a la pestaña "Reglas de manipulación de marcado"
Prescribir plantillas. Especifique los prefijos para cada troncal en orden. Para la primera línea 1, para la segunda 2, etc.

Configuración general de sorbo de pestañas
Saliente
Asterisk usa el mismo puerto para varias cuentas. Esto crea un problema para determinar la línea con la que llegó la llamada. Con una llamada entrante, la última fiesta registrada siempre se usa y, como resultado, la línea GoIP de la que vino la llamada se determina incorrectamente. Para determinar correctamente la línea, el modo GoIP se configuró en
Usar Id. De grupo remoto , y en Astrisk,
trustrpid = yes .
host=dynamic username=7712020077 secret=Djfgkjgfd!!!!234%$^%# type=friend context=from-trunk-sip-9651234567-custom trustrpid=yes

Entrante
in-9651234567 secret=Djfgkjgfd!!!!234%$^%# type=user context=from-trunk-sip-9651234567-custom

Luego, cree los números de extensión y el grupo de llamadas. No describiré cómo se hace esto. En FreePBX, esto se hace a través del menú "Aplicaciones" - "Extensiones" y "Aplicaciones" - "Grupos de llamadas". Todo es bastante simple e intuitivo.
Conexiones - Enrutamiento de salida
Seleccione "Agregar ruta de salida".
Ficha Configuración de ruta
Especifique el nombre de la ruta, por ejemplo, all_line. A continuación, indicamos en orden las líneas troncales a través de las cuales se realizarán las llamadas salientes.

Vaya a la pestaña "Reglas de marcación"
Aquí prescribimos patrones para números salientes.

Las pestañas restantes se dejan por defecto. Esto completa la configuración de la ruta saliente. Puedes intentar hacer una llamada.
Aquí puede surgir un problema de que las llamadas pasarán por las líneas troncales en el orden en que se indican en la ruta. Lo que a su vez conducirá al hecho de que las unidades en las primeras líneas irán más que las que las siguen. Para resolver este problema, puede reescribir las reglas para la ruta de salida usando extensiones_override_freepbx.conf.
Dependiendo del número de líneas, puede usar al azar. Para dos líneas, por ejemplo, 1.2. Yo uso un código como este
[outrt-sets](!) exten => _.,50,Set(a_rand_num=${RAND(1,2)}); same => n,GotoIf($["${a_rand_num}"<"2"]?${n}+1:${n}+2) same => n,GotoIf($["${GROUP_COUNT(OUT_1)}">="${OUTMAXCHANS_1}"]?${n}+1:out-1-cust) ... [outrt](outrt-sets) ; all_line exten => _+7XXXXXXXXXX,3,Goto(50) exten => _8XXXXXXXXXX,3,Goto(50)
Conexiones - Enrutamiento entrante
Añadir ruta entrante.
Pestaña General
Especifique su descripción, por ejemplo, "entrante".
A continuación, seleccione el último elemento "Establecer dirección", en el que seleccionamos el punto final de la ruta. En mi caso, indiqué un grupo de llamadas para que las llamadas fueran a cualquier operador libre.
En realidad, tengo una lógica más compleja. Utilizando un script AGI, busco el número entrante en la base de datos, si lo encuentro, lo enviaré al operador al que está asignado. Antes de recibir una llamada al cliente sip a través de jabber, envío un mensaje al operador con información sobre el cliente. Si el número no se encuentra en la base de datos, la llamada se dirige al grupo.

Esto completa la configuración. Puede intentar hacer y recibir llamadas.
Conclusión
A muchos no les gusta configurar FreePBX, pero ponen un asterisco desnudo. Tenía cero experiencia con la telefonía IP, por lo que en un momento la elección recayó en FreePBX. No tuve problemas con la edición de configuraciones. Cualquier cambio se puede hacer usando el archivo de configuración extensiones_custom.conf y extensiones_override_freepbx.conf. No es tan difícil de entender. Tenemos un pequeño centro de llamadas. GoIP demostró ser el mejor. Lo único que no fue arreglado por su servidor de SMS nativo. Por lo tanto, el mío fue escrito, lo que permite enviar y recibir mensajes SMS, y también muestra el estado de la entrega de SMS. Tenemos un reemplazo de teléfono completo.
Como cliente sip usamos un teléfono web escrito sobre la base de la biblioteca JsSip, funciona bien en Firefox 68 y Chrome 76. Si tengo tiempo, escribiré instrucciones más detalladas sobre el uso de la biblioteca JsSip. Además de un artículo separado sobre cómo crear su propio servidor de SMS.