Il existe de nombreux exemples de personnalisation sur Internet. Mais aucun d'eux n'a travaillé pour moi comme il se doit. L'un des problèmes que j'ai rencontrés était la définition incorrecte de la ligne avec un appel entrant. À un moment donné, je n'ai jamais trouvé de manuel pour résoudre ce problème. Par conséquent, j'ai décidé de publier ma version des instructions ici. En même temps, et un berceau pour vous-même pour l'avenir.
Configuration de GoIP
"Configurations" - "Préférences"
La passerelle GSM se trouve dans un réseau local sans accès Internet. Configurez un serveur NTP sur le réseau local pour répartir le temps. Au redémarrage, la passerelle GSM se synchronise et affiche correctement l'heure actuelle. Vous pouvez ignorer cette étape, puis vous devrez régler manuellement l'heure sur la passerelle. Si vous avez accès à Internet, spécifiez l'un des serveurs NTP publics.
- Dans Time Server, écrivez l'adresse IP du serveur NTP.
- Spécifiez le fuseau horaire, j'ai le fuseau horaire: GMT + 6.
- Désactivez le redémarrage automatique. Avec la dernière version du firmware, aucun problème de gel de la passerelle GSM n'est observé.
- Désactivez l'IVR.

«Configurations» - «Réseau»
- Port LAN - IP statique
- Adresse IP - spécifiez l'adresse IP statique de la passerelle
«Configurations» - «VoIP de base»
Mode de configuration - Configuration par ligne.
Pour le premier canal où "Line 1 Routing Prefix" nous spécifions 1, pour le second 2, le troisième 3, etc.
ID d'authentification: enregistrez le numéro de la carte SIM (je l'ai enregistré sans 8 / + 7), par exemple 9651234567
SIP Registrar Server: adresse IP du serveur 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
Nous faisons de même avec le reste des lignes.

«Configurations» - «VoIP avancé»

«Configurations» - «Appeler»
Pour chaque ligne, spécifiez le préfixe fourni avec l'astérisque et sera supprimé sur le canal de la passerelle avant d'effectuer un appel sortant: par exemple, pour le plan de numérotation CH1: 1: -1, le plan de numérotation CH2: 2: -2, etc.
Dial Plan: 1:-1

«Configurations» - «Appeler»
Les instructions de configuration recommandent pour le mode de transfert CID: sélectionnez Utiliser le CID comme ID d'appelant SIP pour déterminer correctement le numéro entrant. J'ai sélectionné Use Remote Party Id. Cela a été fait pour déterminer correctement la ligne avec laquelle l'appel est venu. Le numéro entrant est déterminé correctement.

Ceci termine la configuration de GoIP.
Configuration de FreePBX 14
Connexions - Trunks
Sélectionnez "Ajouter un tronc SIP (chan_sip)".
Onglet Général

Accédez à l'onglet "Règles de manipulation de numérotation"
Prescrire des modèles. Spécifiez les préfixes pour chaque tronc dans l'ordre. Pour la première ligne 1, pour la seconde 2, etc.

Tab Sip Paramètres généraux
Sortant
Asterisk utilise le même port pour plusieurs comptes. Cela crée un problème pour déterminer la ligne avec laquelle l'appel est venu. Avec un appel entrant, la dernière fête enregistrée est toujours utilisée et par conséquent, la ligne GoIP d'où provient l'appel est incorrectement déterminée. Pour déterminer correctement la ligne, le mode GoIP a été défini sur
Use Remote Party Id , et sur Astrisk,
trustrpid = yes .
host=dynamic username=7712020077 secret=Djfgkjgfd!!!!234%$^%# type=friend context=from-trunk-sip-9651234567-custom trustrpid=yes

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

Ensuite, créez les numéros de poste et le groupe d'appels. Je ne décrirai pas comment cela se fait. Dans FreePBX, cela se fait via le menu "Applications" - "Extensions" et "Applications" - "Groupes d'appel". Tout est assez simple et intuitif.
Connexions - Routage sortant
Sélectionnez "Ajouter un itinéraire sortant".
Onglet Paramètres de l'itinéraire
Spécifiez le nom de l'itinéraire, par exemple, all_line. Ensuite, nous indiquons dans l'ordre les lignes à travers lesquelles les appels sortants seront passés.

Accédez à l'onglet "Règles de numérotation"
Ici, nous prescrivons des modèles pour les numéros sortants.

Les onglets restants sont laissés par défaut. Ceci termine la configuration de la route sortante. Vous pouvez essayer de passer un appel.
Dans ce cas, un problème peut survenir: les appels passeront par les lignes dans l'ordre dans lequel ils sont indiqués sur l'itinéraire. Ce qui à son tour conduira au fait que les unités sur les premières lignes iront plus que celles qui les suivent. Pour résoudre ce problème, vous pouvez réécrire les règles de l'itinéraire sortant à l'aide d'extensions_override_freepbx.conf.
Selon le nombre de lignes, vous pouvez utiliser au hasard. Pour deux lignes, par exemple, 1.2. J'utilise du code comme celui-ci
[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)
Connexions - Routage entrant
Ajouter un itinéraire entrant.
Onglet Général
Spécifiez sa description, par exemple - "entrant".
Ensuite, sélectionnez le dernier élément "Définir la direction", dans lequel nous sélectionnons le point final de l'itinéraire. Dans mon cas, j'ai indiqué un groupe d'appels pour que les appels soient dirigés vers n'importe quel opérateur libre.
En fait, j'ai une logique plus complexe. A l'aide d'un script AGI, je cherche le numéro entrant dans la base de données, si je le trouve, je l'enverrai à l'opérateur auquel il est attribué. Avant de recevoir un appel au client SIP par jabber, j'envoie un message à l'opérateur avec des informations sur le client. Si le numéro n'est pas trouvé dans la base de données, alors l'appel va au groupe.

Ceci termine la configuration. Vous pouvez essayer de passer et de recevoir des appels.
Conclusion
Beaucoup n'aiment pas configurer FreePBX, mais mettent un astérisque nu. Je n'avais aucune expérience avec la téléphonie IP, donc à un moment donné, le choix s'est porté sur FreePBX. Je n'ai eu aucun problème avec l'édition des configs. Toute modification peut être effectuée à l'aide des fichiers de configuration extensions_custom.conf et extensions_override_freepbx.conf. Ce n'est pas si difficile à comprendre. Nous avons un petit centre d'appels. GoIP s'est avéré être le meilleur. La seule chose n'a pas été arrangée par leur serveur SMS natif. Par conséquent, le mien a été écrit, qui prend en charge l'envoi et la réception de messages SMS, et montre également l'état de la remise des SMS. Nous avons un remplacement de téléphone à part entière.
En tant que client SIP, nous utilisons un téléphone Web écrit sur la base de la bibliothèque JsSip, cela fonctionne très bien dans Firefox 68 et Chrome 76. Si j'ai le temps, j'écrirai des instructions plus détaillées sur l'utilisation de la bibliothèque JsSip. Ainsi qu'un article séparé sur la création de votre propre serveur SMS.