Asterisk und das SIP-Protokoll

Guten Tag an alle! Ich bin Benoît, Anwendungsentwickler bei NetDevices. Ich bin vor allem auf die Entwicklung von Anwendungen spezialisiert. Heute möchte ich Ihnen das Prinzip vonAsterisk und das SIP-Protokoll.

Was ist Asterisk?

asterisk und das sip-Protokoll

Asterisk ist ein private Telefonanlage (PABX) unter Linux. Das Prinzip der Telefonanlage besteht darin, dass sie eine vollständige Verwaltung der internen und externen Kommunikation einer Gruppe von Nebenstellen ermöglicht. Zum Beispiel innerhalb einer Versicherungsgruppe, eines Unternehmens oder eines Krankenhauses.  

Asterisk verfügt über eine Vielzahl von Funktionen, die eine große Mehrheit der Telefonieanforderungen erfüllen. Es ermöglicht beispielsweise direkte Anrufe (wie eine klassische Telefonleitung), aber auch Voicemail, Warteschleifen, Anrufkonferenzen, Anrufweiterleitung an die entsprechende Abteilung je nach Wahl des Kunden (Callcenter)...

Diese Funktionen werden durch Protokolle zur Verbesserung der telefonischen und mobilen UX ergänzt werden.

Ein mögliches Protokoll: SIP.

Was ist das SIP-Protokoll?

SIP (Session Initiation Protocol) ist ein Protokoll, das die Multimediaanrufe (Audios, Videos, Nachrichten). Diese Anrufe können z. B. mit Audio eingeleitet werden und dann in den Videomodus wechseln, ohne dass der Anruf unterbrochen wird. Ein anderes Beispiel: Bei einem Verbindungsabbruch oder einem Verlust der Datenrate wird der Anruf neu verhandelt, sodass er weitergeführt werden kann, aber die Qualität des Anrufs sinkt.

Dies wird durch den Codec ermöglicht.

Was ist ein Codec?

Die Codec ("Codierung-Decodierung") ist ein Gerät, das ein digitales Signal komprimieren und/oder dekomprimieren kann. Jeder Codec kann mehrere Betriebsmodi haben, die seine Leistung verändern. Die Wahl des zu verwendenden Codecs erfolgt unter Berücksichtigung der Möglichkeit, ihn Ende-zu-Ende zu verwenden (bei einem Anruf vom Typ VOIP müssen beide Endgeräte das Signal nicht nur codieren, sondern auch decodieren können und daher den Codec von install haben), aber auch der Qualität des Netzes. Ein Codec mit einer hohen Kompressionsrate (und damit einem Qualitätsverlust) wird gewählt, wenn die Netzqualität nicht ausreichend ist. Umgekehrt werden Codecs mit höherer Qualität bei guter Verbindungsqualität verwendet.

Einige Beispiele für Codecs

Der bekannteste Codec im Audiobereich ist: Der MP3

Bei Audio-/Videoanrufen sind die am häufigsten verwendeten Codecs jedoch die folgenden:

  • G711 G723 G726 G729 GSM iLBC für Audio (man findet gut den GSM der für Anrufe in Mobilfunknetzen verwendet wird)
  • H.261 H.263/ H.263+ / H.263++ MPEG-4 H.264 für das Video

Es gibt natürlich jede Menge anderer, manche frei, andere proprietär.

Projekt made in NetDevices

Innerhalb von NetDevices mussten wir diese Technologien für einen unserer Kunden einsetzen. Unser Kunde (VideoDesk) ist ein Start-up-Unternehmen, das es E-Commerce-Websites ermöglicht, eine "Chat"-Schnittstelle (Text, Audio oder Video) zwischen Kunden und Verkäufern zu integrieren. VideoDesk bot bereits ihre Dienste bei der Integration auf Websites an und kontaktierte uns, um einen SDK das es ermöglicht, ihren Dienst in mobile Anwendungen zu integrieren. Das SDK wurde für die Integration auf iOS und Android entwickelt. Um die verschiedenen Tests durchzuführen, haben wir in unserem Unternehmen einen SIP-Server eingerichtet, um die Kontrolle über den End-to-End-Austausch zu haben.

[wpforms id="9980" title="false"]
<div class="wpforms-container wpforms-container-full" id="wpforms-9980"><form id="wpforms-form-9980" class="wpforms-validate wpforms-form wpforms-ajax-form" data-formid="9980" method="post" enctype="multipart/form-data" action="/asterisk-et-le-protocole-sip/" data-token="2fc59a98beec225aaa51eed87ffc9410"><noscript class="wpforms-error-noscript">Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.</noscript><div class="wpforms-field-container"><div id="wpforms-9980-field_3-container" class="wpforms-field wpforms-field-layout" data-field-id="3"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-9980-field_3">Layout</label><div class="wpforms-field-layout-columns wpforms-field-layout-preset-50-50"><div class="wpforms-layout-column wpforms-layout-column-50"><div id="wpforms-9980-field_0-container" class="wpforms-field wpforms-field-name" data-field-id="0"><label class="wpforms-field-label" for="wpforms-9980-field_0">Résumé / Pitch du projet <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-9980-field_0" class="wpforms-field-small wpforms-field-required" name="wpforms[fields][0]" required></div><div id="wpforms-9980-field_16-container" class="wpforms-field wpforms-field-radio wpforms-conditional-trigger" data-field-id="16"><label class="wpforms-field-label" for="wpforms-9980-field_16">J&#039;ai une description détaillée du projet</label><ul id="wpforms-9980-field_16"><li class="choice-1 depth-1"><input type="radio" id="wpforms-9980-field_16_1" name="wpforms[fields][16]" value="Oui" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_16_1">Oui</label></li><li class="choice-2 depth-1"><input type="radio" id="wpforms-9980-field_16_2" name="wpforms[fields][16]" value="Non" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_16_2">Non</label></li></ul></div><div id="wpforms-9980-field_18-container" class="wpforms-field wpforms-field-checkbox wpforms-conditional-field wpforms-conditional-show" data-field-id="18" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_18">Vous avez des technos en tête ?</label><ul id="wpforms-9980-field_18"><li class="choice-1 depth-1"><input type="checkbox" id="wpforms-9980-field_18_1" name="wpforms[fields][18][]" value="fullstackJS / python" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_1">fullstackJS / python</label></li><li class="choice-2 depth-1"><input type="checkbox" id="wpforms-9980-field_18_2" name="wpforms[fields][18][]" value="nocode bubble" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_2">nocode bubble</label></li><li class="choice-3 depth-1"><input type="checkbox" id="wpforms-9980-field_18_3" name="wpforms[fields][18][]" value="autre" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_18_3">autre</label></li></ul></div><div id="wpforms-9980-field_19-container" class="wpforms-field wpforms-field-checkbox wpforms-conditional-field wpforms-conditional-show" data-field-id="19" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_19">Type de projet</label><ul id="wpforms-9980-field_19"><li class="choice-1 depth-1"><input type="checkbox" id="wpforms-9980-field_19_1" name="wpforms[fields][19][]" value="Applications web / mobiles" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_1">Applications web / mobiles</label></li><li class="choice-2 depth-1"><input type="checkbox" id="wpforms-9980-field_19_2" name="wpforms[fields][19][]" value="Projet data, IA " ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_2">Projet data, IA </label></li><li class="choice-3 depth-1"><input type="checkbox" id="wpforms-9980-field_19_3" name="wpforms[fields][19][]" value="Site vitrine / e-commerce" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_19_3">Site vitrine / e-commerce</label></li></ul></div><div id="wpforms-9980-field_12-container" class="wpforms-field wpforms-field-textarea wpforms-conditional-field wpforms-conditional-show" data-field-id="12" style="display:none;"><label class="wpforms-field-label" for="wpforms-9980-field_12">Description détaillée de votre projet </label><textarea id="wpforms-9980-field_12" class="wpforms-field-medium" name="wpforms[fields][12]" ></textarea></div></div><div class="wpforms-layout-column wpforms-layout-column-50"><div id="wpforms-9980-field_1-container" class="wpforms-field wpforms-field-email wpforms-one-third" data-field-id="1"><label class="wpforms-field-label" for="wpforms-9980-field_1">Votre e-mail <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-9980-field_1" class="wpforms-field-small wpforms-field-required" name="wpforms[fields][1]" required></div><div id="wpforms-9980-field_17-container" class="wpforms-field wpforms-field-radio" data-field-id="17"><label class="wpforms-field-label" for="wpforms-9980-field_17">Signer un accord de confidentialité ?</label><ul id="wpforms-9980-field_17"><li class="choice-1 depth-1"><input type="radio" id="wpforms-9980-field_17_1" name="wpforms[fields][17]" value="Oui" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_17_1">Oui</label></li><li class="choice-2 depth-1"><input type="radio" id="wpforms-9980-field_17_2" name="wpforms[fields][17]" value="Non" ><label class="wpforms-field-label-inline" for="wpforms-9980-field_17_2">Non</label></li></ul></div></div></div></div></div><div class="wpforms-submit-container"><input type="hidden" name="wpforms[id]" value="9980"><input type="hidden" name="wpforms[author]" value="1"><input type="hidden" name="wpforms[post_id]" value="5457"><button type="submit" name="wpforms[submit]" id="wpforms-submit-9980" class="wpforms-submit" data-alt-text="Envoi..." data-submit-text="Envoyer" aria-live="assertive" value="wpforms-submit">Envoyer</button><img src="https://www.netdevices.fr/wp-content/plugins/wpforms/assets/images/submit-spin.svg" class="wpforms-submit-spinner" style="display: none;" width="26" height="26" alt="Chargement en cours"></div></form></div> <!-- .wpforms-container -->