Comment arrêter de payer pour l'itinérance, ou avec un seul numéro partout dans le monde

L'idée de ce matériel m'est venue l'année dernière, quand, après avoir fait un grand cercle sur notre immense, à la fin du mois j'ai reçu des factures d'itinérance. Malgré les assurances des entreprises de téléphonie mobile concernant l'itinérance gratuite dans le pays, le trafic SMS ou Internet peut être facturé séparément. Et les minutes incluses dans le tarif ne sont valables que dans la «région d'origine». Eh bien, puisque cette année, les plans incluent de voyager non seulement dans mon pays natal, j'ai commencé à réaliser mon idée - mon propre central téléphonique fixe à la maison, qui pourra me contacter partout dans le monde.
En cours de route, j'ai résolu le problème des communications téléphoniques entre les appartements et les maisons des proches, car le temps des négociations internes était calculé non seulement par heures, mais par dizaines d'heures.
Petit spoiler: du coup, j'ai réussi à installer Asterisk sur le NAS et le routeur



J'ai donc conclu que j'avais besoin de ma propre téléphonie. On pourrait choisir n'importe lequel des services de téléphonie SIP qui sont présents en grand nombre sur le marché. Mais j'avais une liste d'exigences qu'aucun des opérateurs ne remplissait:

  • Choix indĂ©pendant des numĂ©ros internes
  • Accès aux lignes de communication externes avec possibilitĂ© d'appels vers des numĂ©ros fixes et cellulaires
  • PossibilitĂ© de choisir un opĂ©rateur fournissant la tĂ©lĂ©phonie IP
  • La possibilitĂ© d'utiliser la carte SIM de l'opĂ©rateur sĂ©lectionnĂ© avec le tarif "tĂ©lĂ©phone" habituel
  • Existence du menu vocal pour le renvoi d'un appel entrant vers l'abonnĂ© nĂ©cessaire
  • CoĂ»t de maintenance minimal ou nul \ maintien de la communication interne

De nombreux opérateurs proposent un central téléphonique virtuel et même un menu vocal. Mais ce service est déjà payé. Certains opérateurs autorisent les appels gratuits sur leur réseau, mais il y a un problème avec la composition de numéros longs. Et certainement personne ne vous permet d'utiliser la carte SIM de l'opérateur sélectionné avec le coût minimum des appels ou des minutes prépayées. J'ai donc décidé de devenir moi-même mon propre opérateur télécom.

Première étape. Choix de plate-forme: virtualisation

Comme je m'occupais déjà de la téléphonie IP, il a été décidé d'augmenter mon PBX basé sur Asterisk - c'est gratuit, il y a beaucoup de forums, de manuels et ... pourquoi pas? J'ai obtenu quelques combinés avec le support SIP et j'ai commencé à penser à la plate-forme pour travailler Asterisk. Pour le mettre dans les nuages ​​ou sur un serveur virtuel, cela signifierait que tôt ou tard vous devrez payer, mais alors l'idée de faire de la téléphonie gratuitement s'effondre. J'ai donc décidé d'utiliser la fonction de virtualisation sur mon NAS QNAP TS-451. J'ai déjà écrit sur cette puce de lecteur réseau, vous pouvez donc en savoir plus . Les performances du système étaient suffisantes non seulement pour le travail d'Asterisk lui-même, mais aussi pour l'interface Web, j'ai donc décidé d'utiliser la distribution Elastix. Je dois dire que la dernière distribution disponible sur le site officiel d'Elastix.org au numéro 5 est déjà un shareware, donc je recommande de rechercher la version 4 de torrents sur les torrents - elle était gratuite et distribuée librement, mais maintenant elle n'est plus disponible sur le site.

La création d'utilisateurs dans Elastix est décrite plusieurs fois, mais le reste n'est pas traité en détail sur le réseau. Je décrirai donc la connexion du fournisseur Multifon SIP de Megafon et la création d'un menu vocal avec renvoi d'appel.

Créez un coffre avec les paramètres de votre compte dans Multifon. Vous pouvez connecter cette option à n'importe quel numéro d'opérateur Megafon. Le prélèvement ne dépend pas du plan tarifaire sélectionné et est effectué pour chaque minute d'un appel sortant. La boîte de réception est gratuite. Deux lignes de conversation sont prises en charge à la fois. De plus, vous pouvez configurer que les appels entrants soient uniquement dirigés vers le téléphone, téléphone + multiphone, uniquement vers le multiphone.


Paramètres de texte pour ceux qui souhaitent ajouter un tronc Multifon à eux-mêmes:

Trunk Multifon
Détails des pairs:

username = phone_number
type = pair
secret = mot de passe
port = 5060
nat = oui
non sécurisé = port, inviter
host = sbc.megafon.ru
fromuser = phone_number
fromdomain = multifon.ru
dtmfmode = inband
context = from-trunk

Enregistrer la chaîne:
phone_number: password@multifon.ru/ phone_number

Nous sommes donc connectés au fournisseur SIP et nous pouvons désormais transférer l'appel entrant vers n'importe quel numéro de poste. Mais que faire si vous voulez que l'appelant choisisse le numéro de poste à composer? Vous pouvez créer un menu vocal avec un choix de destinataire. Je vais faire une description étape par étape.

Créer un menu vocal dans Elastix

Accédez aux enregistrements système. Ici, les paramètres de l'enregistrement vocal à effectuer sont déjà écrits: PCM, 16 bits, 8000 Hz. Cela peut être fait à la fois dans l'utilitaire d'enregistrement standard et dans des programmes tiers comme SoundForge.



Une fois le message d'accueil vocal créé et téléchargé sur le serveur, accédez à l'élément de menu IVR. Nous créons un nouveau menu vocal et sélectionnons le fichier de bienvenue, ainsi que la réaction à l'appui sur les boutons. Dans mon cas, j'ai choisi qu'en appuyant sur le chiffre «3» le numéro «101» soit appelé et ainsi de suite. Si le mauvais bouton est sélectionné ou si l'appelant n'appuie pas sur un seul bouton, l'appel est renvoyé vers le poste 304.



Maintenant, nous devons faire en sorte que l'appel entrant arrive dans notre menu vocal. Nous allons à l'élément Routes entrantes et créons une nouvelle règle. Dans le dernier paragraphe de «Définir la destination», sélectionnez IVR et la file d'attente précédemment créée, que j'ai appelée «dozvon».


Nous économisons et utilisons. Tout cela a fonctionné pendant environ un mois sans échecs, mais cela ne me semblait pas suffisant. Après tout, toutes les maisons n'ont pas de NAS avec une machine virtuelle ou un serveur sur lequel vous pouvez élever l'astérisque, mais presque toutes les maisons ont un routeur!

Problèmes possibles et leur solution avec un serveur virtuel

Dans le processus de création du serveur et de la redirection de port, il s'est avéré que le fonctionnement de deux machines virtuelles et d'un serveur physique sur le même port réseau n'est pas très efficace. La solution la plus simple consistait à tirer parti du système de virtualisation et à sélectionner une interface réseau distincte pour une machine virtuelle. Il s'est avéré très simple de le faire avec les outils QNAP intégrés. Après cela, la machine virtuelle NAS + 1 elle-même est restée sur la première interface réseau et la deuxième machine virtuelle sur la deuxième interface réseau.



Deuxième étape: soulever l'astérisque sur le routeur

Il se trouve que j'utilise le fournisseur Yota, mais je n'utilise pas leurs routeurs d'origine. Pendant longtemps, j'ai installé un excellent routeur de Zyxel - Keenetic LTE. Il y a quelques années, je l'ai déjà testé dans les conditions les plus difficiles de l'outback et j'étais complètement satisfait - il y a un matériel séparé à ce sujet sur Habré.

Dans le dernier firmware NDMS, ou plus précisément, à partir du firmware 2.08.B, la prise en charge des packages OPKG est incluse pour la famille de routeurs Zyxel Keenetic. Cela signifie que vous pouvez mettre les logiciels les plus divers. (Il existe de nombreux logiciels adaptés aux routeurs Zyxel) Alors pourquoi ne pas y mettre Asterisk? Il est important que le routeur dispose d'au moins 128 Mo de RAM. Aussitôt dit, aussitôt fait!
C'est d'autant plus agréable que les spécialistes Zyxel ont même préparé un manuel de déploiement d'Asterisk pour leurs routeurs. En principe, pour déployer la téléphonie sur un routeur, il suffit de suivre les instructions pas à pas. Et je vais vous dire comment j'ai amélioré et apporté le fonctionnement de ce système à celui qui tournait sur un serveur virtuel séparé.

La première chose que j'ai rencontrée était un problème peu clair avec le démarrage du routeur après un redémarrage du logiciel. Il s'est avéré que ma clé USB, connectée au port USB du routeur, consomme du courant jusqu'à 0,16A. Cela s'est avéré suffisant pour que le modem LTE du routeur Zyxel Keenetic LTE ne puisse pas démarrer périodiquement. Tout a été guéri en connectant un lecteur flash via un concentrateur USB externe avec une alimentation supplémentaire. Pris le temps testé par de nombreuses personnes D-Link DUB-H7 . Cela a mis fin aux problèmes. Je crois que les routeurs avec une paire de ports USB fonctionneront sans de telles béquilles.

Passons maintenant aux paramètres de l'astérisque. Ici, vous devez déjà modifier tous les stylos. Il y a deux façons: aller sur SSH et y éditer (MC est présent) ou faire le tour de la balle vers l'adresse IP du routeur et éditer les fichiers à l'aide de Notepad ++. Les deux options me convenaient et je me mis au travail. Ajout de mes utilisateurs, enregistrement du multi-tronc dans le fichier sip.conf. Il ne reste plus qu'à faire une file d'attente vocale. J'ai placé le fichier d'accueil vocal dans \\ 192.168.1.1 \ Asterisk-blue \ var \ lib \ asterisk \ sons \ ru et j'ai apporté les modifications suivantes au fichier extensions.conf.

Créer un menu vocal dans Asterisk
[externe-sortant]
; ------------------ Multifon - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Wait (2)
exten => _8 .........., n, Lecture (/ opt / var / lib / asterisk / sons / itsp_names / multifon)
exten => _8 .........., n, Dial (SIP / Multifon / 7 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, raccrocher ()

[multifon-entrant]; ===== Appel entrant de Multifon =====
exten => _........, 1, NoOp ()
exten => _........, n, Wait (4)
exten => _........, n, Answer ()
exten => _........, n (lecture), NoOp ()
exten => _........, n, Wait (1)
exten => _........, n, lecture (bonjour)
exten => _........, n, Wait (0,5)
exten => _........, n, Lecture (priv)
exten => _........, n, Set (TIMEOUT (digit) = 1)
exten => _........, n, NoOp ()
exten => _........, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), composer (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), composer (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), composer (SIP / 304.60, mt)

Donc ça a marché. Les appels sortants passent par Multifon, les appels internes entre abonnés sont gratuits et les appels entrants via Multifon peuvent être adressés à l'un des trois abonnés. Mais cela ne me semblait pas suffisant. Et il est dommage que seul le mégaphone donne une connexion SIP alternative à une ligne cellulaire. Et si vous souhaitez utiliser un autre opérateur de téléphonie mobile? Il y a une solution au problème!

Troisième étape: nous attachons tout opérateur mobile à notre Asterisk

La dernière étape a été de connecter tout opérateur mobile à notre serveur de téléphonie. La solution la plus logique serait de connecter une passerelle GSM-SIP, ce qui donne un tronc SIP à la sortie. Mais le coût de ces appareils par 1 carte SIM commence à partir de 9 mille roubles, il a donc été décidé d'aller dans l'autre sens. Nous trouvons un modem avec support vocal. Dans notre cas, il s'agit du Huawei E3131. Comment le déverrouiller et activer les fonctionnalités vocales a été décrit à plusieurs reprises sur le réseau, donc je ne serai pas distrait par cela. Nous insérons la carte SIM dont nous avons besoin dans le port du concentrateur USB et tout d'abord, désactivons son fonctionnement en tant que modem 3G dans le menu.



Ensuite, nous commençons à configurer les fichiers de l'Asterisk. Tout d'abord, installez le package Dongle avec la commande dans la console opkg install asterisk11-chan-dongle . Après l'installation, ouvrez le fichier dongle.conf et modifiez-le pour obtenir les éléments suivants:

Fichier de travail dongle.conf
[dongle]
intervalle = 15

[par défaut]
contexte = dongle-entrant
rxgain = 0
txgain = 0
usecallingpres = oui
appel en attente = non
dtmf = intrabande
mindtmfgap = 45; intervalle minimal entre la fin des aperçus DTMF et le début du suivant en ms
mindtmfduration = 80; durée minimale de tonalité DTMF en ms
mindtmfinterval = 200; intervalle minimal entre les extrémités du DTMF de mêmes chiffres en ms

[GSM1]
audio = / dev / ttyUSB1
data = / dev / ttyUSB2
imei = *****************; E3131 - Entrez le modem IMEI

Enregistrez le fichier et accédez au fichier extensions.conf. Le multifon peut être mis en commentaire et ajouté pour fonctionner avec le modem.

Nous nous inscrivons pour le fonctionnement des appels via le modem USB dans le fichier extensions.conf
[dongle sortant]; pour les appels sortants:
; ------------------ GSM1 Donle - exten => _8 .........., 1, NoOp ()
exten => _8 .........., n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _8 .........., n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _8 .........., n, Answer ()
exten => _8 .........., n, Wait (2)
exten => _8 .........., n, lecture (/ opt / var / lib / asterisk / sons / itsp_names / beeline-gsm)
exten => _8 .........., n, composer (DONGLE / GSM1 / 8 $ {EXTEN: 1} ,, T)
exten => _8 .........., n, raccrocher ()

[dongle entrant]; pour les appels entrants:
exten => s, 1, NoOp ()
exten => s, n, Wait (4)
exten => s, n, Answer ()
exten => s, n (lecture), NoOp ()
exten => s, n, Wait (1)
exten => s, n, lecture (bonjour)
exten => s, n, Wait (0,5)
exten => s, n, Lecture (priv)
exten => s, n, Set (TIMEOUT (digit) = 1)
exten => s, n, NoOp ()
exten => s, n, WaitExten (7)

exten => _1,1, NoOp ()
exten => _1, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _1, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _1, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _1, n (dial_ext), composer (SIP / 101.60, mt)

exten => _2,1, NoOp ()
exten => _2, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _2, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _2, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _2, n (dial_ext), composer (SIP / 302.60, mt)

exten => _3,1, NoOp ()
exten => _3, n, Set (__ SIP_CODEC_OUTBOUND = ulaw)
exten => _3, n, Set (__ SIP_CODEC_INBOUND = ulaw)
exten => _3, n, Set (CALLERID (num) = 8 $ {CALLERID (num): 1})
exten => _3, n (dial_ext), composer (SIP / 304.60, mt)

Maintenant, tout a commencé et a fonctionné comme il se doit. L'astérisque accepte les appels entrants vers un numéro et l'utilisateur choisit où l'appeler en sélectionnant un numéro. Un appel sortant passe par n'importe quel opérateur mobile, où que vous soyez. Autrement dit, vous pouvez insérer votre carte SIM dans un modem USB et vous rendre n'importe où dans le monde. Là, il suffit d'avoir accès au réseau, et sur le smartphone / ordinateur portable d'avoir un client SIP qui se connectera à votre serveur Asterisk. La solution est exécutée et fonctionne. Les problèmes résultants ont été traités en ajoutant un concentrateur USB avec une alimentation externe et en remplaçant le lecteur flash, car certains lecteurs fonctionnaient mal. Tout le travail de mise en service de la téléphonie prendra une soirée.

Pour éviter que ce travail ne disparaisse, vous pouvez créer une sauvegarde de l'ensemble de l'astérisque sur un lecteur flash avec une seule commande:

Faire une sauvegarde de l'astérisque sur un lecteur flash
tar cvzf / opt / backup-`date "+% Y-% m-% d_% H-% M" .tar.gz -C / opt / bin etc home lib lost + found root sbin share tmp usr var

Bonus pour les propriétaires de Zyxel Keenetic LTE

Il convient de noter que ce routeur est également équipé de deux clients SIP avec des ports FXS physiques, auxquels vous pouvez connecter n'importe quel téléphone analogique. Et ce client se connecte facilement au serveur Asterisk, qui tourne dessus.

Bonus pour les propriétaires de Zyxel Keenetic *

Si vous ne voulez pas dépenser d’argent pour acheter des téléphones SIP, la gamme de routeurs Keenetic prend en charge l’adaptateur DECT Zyxel, qui ajoute la fonctionnalité de téléphonie SIP avec la possibilité de connecter n’importe quel combiné sans fil DECT.

Conclusion

Le problème de la libre communication entre divers abonnés avec des conversations fréquentes et longues est résolu. La tâche de «présence» de l'abonné dans la ville et de libre communication avec le propriétaire du numéro, où qu'il se trouve, est également résolue. La solution NAS QNAP TS-451 avec virtualisation bénéficie de la possibilité de configurer Asterisk via une interface Web. Mais la solution avec un routeur ne nécessite presque aucun coût. Astérisque - c'est facile! Pourquoi payer pour l'itinérance alors que la connexion peut être gratuite?

Je tiens à remercier séparément l'équipe Zyxel pour sa réactivité, son aide à l'expérimentation et l'augmentation des fonctionnalités de ses appareils.

PS Comme correctement commenté ci-dessous, presque tous les opérateurs mobiles interdisent l'utilisation d'une carte SIM pour créer une porte GSM. En fait, personne ne vous bloquera jusqu'à ce que vous commenciez l'exploitation commerciale de votre portail. L'auteur n'est pas responsable de vos actions.
Cependant, je connais des cas où des entreprises ont utilisé des dizaines de cartes SIM dans des passerelles GSM pour des appels à bas prix vers des numéros de cellulaire.

Source: https://habr.com/ru/post/fr402367/


All Articles