TAPI for Asterisk Hilfe:
TAPI-Wahl / MakeCall

- Asterisk TAPI-Line - Konfiguration
- Asterisk Server Konfiguration
- Hinweise/FAQ

- TAPI-Wahl / MakeCall
- Anruf annehmen

Auf dieser Seite

- TAPI-Wahl für speziell unterstützte Geräte
- TAPI-Wahl für "Standard" Telefone
  - mittels AMI-Befehl "Originate"
  - Auto-Answer
  - CallerId

> Das Asterisk Manager Interface (AMI) ermöglicht einen Verbindungsaufbau über den Befehl "Originate". Wenn die Asterisk-Anlage über das AMI einen "Originate"-Befehl empfängt, dann ruft die Anlage zuerst das eigene Telefon. Diesen Anruf muss der Nutzer annehmen. Anschließend ruft die Anlage die Zielrufnummer.

> Der beschriebene Ablauf bedingt leider unschöne Nebeneffekte. Daher unterstützt der TAPI-Treiber für einige Geräte (IP-Telefone / SoftPhones) einen direkten Verbindungsaufbau. Leider ist diese Art der Ansteuerung nicht standardisiert, sondern jeweils speziell auf die Telefonmodelle angepasst.

> In der TAPI-Treiber Line-Konfiguration sehen Sie unter [Parameter für TAPI-gesteuerten Verbindungsaufbau > Spezielle Geräte] welche Telefone aktuell unterstützt werden. Wenn Sie eines der aufgelisteten Telefone verwenden, dann wählen Sie dieses bitte aus.

#### TAPI-Wahl für speziell unterstützte Geräte

> ###### Speziell unterstützte IP-Telefone

> Für einige IP-Telefone (z.B. Snom oder Yealink) enthält der TAPI-Treiber spezielle Anpassungen, um eine CTI-Wahl per URL-Aufruf direkt im Telefon auszulösen.

> Beispiele für speziell unterstützte Telefone:

> - snom
> - Aastra/Mitel
> - Yealink
> - Grandstream
> - Tiptel
> - Fanvil
> - DECT-Telefone werden nicht unterstützt

> Die Aktionen Wählen, Annehmen und Auflegen werden direkt per HTTP zum IP-Telefon gesendet (der gleiche Weg, wie per Webbrowser).
> Je nach Telefon werden auch unterstützt: Halten, Rückfrage, Übergeben und Makeln.

> ###### Spezielles Gerät = Yealink

> Yealink Telefone besitzen eine Sicherheitsfunktion, so dass eine Steuerung (Wählen, Rufannahme) nur von bestätigten IP-Adressen aus möglich ist.

> Dazu muss die IP-Adresse Ihres Rechners in der "Action URI allow IP List" eingetragen sein. Siehe:

> - [Yealink-Web-Konfiguration > Features > Remote Control > Action URI allow IP List].
>   - Sollte "Remote Control" in der linken Navigation nicht sichtbar sein, dann wurde diese Seite eventuell von Ihrem Telefonanbieter für einfache User-Logins gesperrt. Wenden Sie sich in diesem Fall bitte an Ihren Telefonanbieter oder Telefonadministrator.
> - Um "Remote Control" für ein Subnetz freizugeben, wäre z.B. manuell 192.168.1.* einzutragen.
> - Eine Freigabe für alle IP-Adressen mit "any" wird von neueren Modellen nicht mehr unterstützt (ab Firmware x.86.0.70).
> - Im Kontext des Asterisk TAPI-Treibers muss die "Action URI allow IP List" manuell per Webbrowser gesetzt werden.
> - Wenn das Telefon in einem anderen Netzwerk eingebunden ist, muss eventuell die IP-Adresse des Routers vom Yealink-Netzwerk in die "Action URI allow IP List" eingetragen werden.

> Wenn die "Action URI allow IP List" erstmalig gesetzt oder geändert wurde, ist bei der nächsten Wahl per CTI/TAPI die Aktion einmalig am Telefon zu bestätigen. Anschließend werden auch CTI-Funktionen wie "Rufannahme" vom Telefon ausgeführt.

> ###### SoftPhones: X-Lite, X-Pro, eyeBeam, andere SoftPhones

> Die gewählten Rufnummern können per Kommandozeile direkt an ein SoftPhone gesendet werden.
> Das SoftPhone muss dazu das Wählen per Kommandozeile unterstützen. Und das SoftPhone muss auf dem Rechner laufen, auf dem auch der "TAPI for Asterisk" Treiber installiert ist.

> - Konfiguration: Unter [Spezielles Gerät > Einstellungen...] ist der Pfad zur Anwendung anzugeben.

> ###### Spezielles Gerät "URL-Control"

> Wenn Sie ein IP-Telefon verwenden, das eine CTI-Wahl per URL unterstützt aber nicht unter "Spezielles Gerät" gelistet ist, dann können Sie ggf. den Eintrag "URL-Control" verwenden. Unter "Einstellungen" geben Sie die entsprechende URL mit Platzhaltern ein.
> Beispiel für Yealink:

> - http://192.168.0.102/servlet?number=%number%

> ###### Spezielles Gerät "Gemeinschaft"

> Hierbei handelt es sich um die Telefonanlage "Gemeinschaft" basierend auf "FreeSwitch". Damit der TAPI-Treiber überhaupt mit "Gemeinschaft" funktioniert, benötigen Sie ein spezielles Modul, das das Asterisk Manager Interface nachbildet.
> Wenn Sie im TAPI-Treiber "Spezielles Gerät" auf "Gemeinschaft" setzen, dann können Sie Wählbefehle per URL-Aufruf direkt zur Anlage senden (vergleichbar dem "Originate" Befehl von Asterisk).

#### TAPI-Wahl für "Standard" Telefone

> Für alle Telefone, die vom TAPI-Treiber nicht speziell unterstützt werden (siehe oberhalb), ist [Spezielles Gerät] = "Standard" zu konfigurieren. Der Verbindungsaufbau erfolgt dann über den Befehl "Originate" der Asterisk Manager Schnittstelle (AMI).

> Konfiguration:

> - TAPI Line Konfiguration - Geräte-Parameter

> ###### CTI/TAPI-Verbindungsaufbau mittels AMI-Befehl "Originate"

> AMI-Befehl "Originate" hat folgende relevante Parameter:

> - Channel: Ihre Telefonkennung innerhalb der Telefonanlage. Beispiele:
>   - SIP/200
>   - PJSIP/200
>   - local/200
>   - IAX/200
>   - Zap/g1/11
>   - Zap/1
>   - Queue/600
>   - ParkPos/701 (ParkeeExten)
>   - ParkingSpace/555
>   - *280 (Beispiel für Hint "*280" überwachen)
> - CallerID: Die Anruferkennung (eigene Rufnummer/Name), die beim Angerufenen angezeigt werden soll.
>   - Hinweise zum CallerID...
> - Context: Verweist auf eine Sektion im Asterisk-Wählplan. Eine derartige Sektion legt u.a. fest, wie Anrufe von internen Nebenstellen zu verarbeiten sind. Ein falscher Context führt meist dazu, dass der Originate-Befehl gar nicht ausgeführt wird, weil der eigene Channel im "Context" nicht bekannt ist.
> - Anderen Channel verwenden: Diese Option können Sie verwenden, wenn der Verbindungsaufbau (Originate) über einen anderen Channel erfolgen muss. Voreinstellung: Aus
>   - Anwendungsbeispiel "Multi Device mit PJSIP": Wenn Sie hier "local/xxx" eintragen (wobei xxx für die Nebenstellennummer steht - analog zur Angabe unter Channel), dann sollten beim Wählen alle Telefone der Nebenstelle klingeln. Mit dem Telefon, das Sie abheben, wird dann die Verbindung aufgebaut.
>     - Sonderfall: In Verbindung mit FreePBX 15 wäre "local/xxx@from-internal" zu verwenden.

> Ablauf: Wenn die Asterisk-Anlage über das AMI einen "Originate"-Befehl empfängt, dann ruft die Anlage zuerst das eigene Telefon. Diesen Anruf muss der Nutzer annehmen. Anschließend ruft die Anlage die Zielrufnummer.
> Der beschriebene Ablauf bedingt leider unschöne Nebeneffekte:

> - Das eigene Telefon sieht den Anruf als "Eingehend" und ggf. mit dem eigenen CallerID und protokolliert das auch so in der telefoninternen Anruf-Historie.
>   - Hinweise zum CallerID...
> - Der Nutzer muss den Anruf manuell am Telefon annehmen/bestätigen.

> ###### "Originate"-Anruf automatisch annehmen (Auto-Answer)

> Einige SIP-Telefone unterstützen ein Auto-Answer mittels INVITE SIP-Header.
> Beispiele:

> - Call-Info: Answer-After=0
> - Alert-Info: ;info=alert-autoanswer
> - Alert-Info: <sip:>;info=alert-autoanswer
> - Alert-Info: <sip:domain>;info=alert-autoanswer
>   domain = Asterisk IP-Adresse

> Siehe auch:

> - www.voip-info.org/wiki/view/Asterisk+Paging+and+Intercom
> - snom Telefone: In der Snom-Web-Konfiguration ist unter [Erweitert > Verhalten] die Option "Intercom Policy" auf "always" oder "only in idle" zu setzen. Siehe auch: answer_after_policy
> - Yealink: In der Yealink-Web-Konfiguration ist "Intercom erlauben" zu aktivieren unter [Leistungsmerkmale > Sprechanlage/Intercom].
> - Grandstream:
>   - Grandstream 2135: In der Grandstream-Web-Konfiguration ist unter [Account X > Call Settings] die Option "Allow Auto Answer by Call-Info/Alert-Info" auf "Yes" zu setzen.
>   - Grandstream 3240: In der Grandstream-Web-Konfiguration ist unter [Account X > Call Settings] die Option "Auto Answer" zu setzen auf "Enable Intercom/Paging".

> Achtung:

> - Einige Telefone bieten auch eine Option um generell alle eingehenden Anrufe anzunehmen.

> Konfiguration im TAPI-Treiber:

> - Wenn Ihr Telefon "auto-answer by call-info" unterstützt, dann können Sie die korrespondierende Option im TAPI-Treiber aktivieren unter:
>   - [Asterisk Line - Konfiguration > Parameter für TAPI-gesteuerten Verbindungsaufbau > Spezielles Gerät = Standard > Einstellungen > Freisprechmodus per INVITE SIP-Header-Info].

> ###### Hinweise zum Parameter "CallerID"

> Der Originate Parameter "CallerID" definiert die Anruferkennung (eigene Rufnummer/Name), die beim Angerufenen angezeigt werden soll.
> Der CallerID ergibt sich aus den Werten "Ihre Rufnummer" und "Ihr Name" vom TAPI-Line-Konfigrationsdialog.

> - Problem 1: Anrufe nach Extern:

>   - Die CallerID-Einstellungen wirken sich normalerweise nur Asterisk-intern aus. Wenn Sie eine andere interne Nebenstelle anrufen, wird Ihr Name/Rufnummer entsprechend den Treiber-Einstellungen angezeigt.
>   - Bei Anrufen nach extern werden die TAPI-Treiber-CallerID-Einstellungen normalerweise von der Anlage bzw. von Ihrem Telefonanbieter ignoriert und mit den Werten überschrieben, die offiziell zu Ihrem Telefonanschluss gehören. Der TAPI-Treiber kann also leider nicht eine beliebige Wunschrufnummer erzwingen.
>   - Wenn Sie als Firma mehrere offizielle Rufnummern besitzen, muss die CallerID-Rufnummer ggf. exakt einer dieser Rufnummern entsprechen. In Abhängigkeit von Ihrem Telefonanbieter oder dessen Konfiguration sehen Kunden Ihre Anrufe sonst nur mit Ihrer Stammnummer oder als Anonym (ohne Nummer).

> - Problem 2: Das eigene Telefon zeigt die eigene Rufnummer/Name an, obwohl man erwarten würde, dass beim Wählen die Zielrufnummer/Name angezeigt werden.

>   - Ursache:
>     - Wenn die Asterisk-Anlage einen "Originate"-Befehl ausführt, wird zuerst das eigene Telefon gerufen und nach Annahme die eigentliche Zielrufnummer.
>     - Aus Sicht der Asterisk-Anlage sind das zwei ausgehende Verbindungen, die folgend intern verbunden werden. Für beide Anrufe verwendet die Asterisk intern die selben CallerID-Werte.
>   - Lösungsansatz 1 (für Anrufe nach Extern):
>     - Unter [CallerID > Einstellungen] setzen Sie den Haken: "Bei externen Verbindungen die Zielrufnummer verwenden."
>     - Bitte testen Sie, ob der Lösungsansatz bei Ihnen funktioniert. In Abhängigkeit von Ihrem Telefonanbieter, kann das auch bewirken, dass der Angerufene keine Nummer sieht oder der Anruf nicht ausgeführt wird.
>     - Diese Lösung funktioniert leider nicht für interne Anrufe, da sonst der Angerufene seine eigene Nummer sehen würde.
>   - Lösungsansatz 2:
>     - Eine Anpassung in der Asterisk-Firmware kann das Problem auch für interne und externe Anrufe beheben.
>     - Für eine ältere Asterisk Version 1.4 hatten wir dazu mal einen Patch erstellt:
>       - Der Patch bewirkt, dass bei einem "Originate" der Parameter "CallerID" nicht an beide Teilnehmer (A=Originator/TAPI User, B=Angerufener), sondern nur an den B Teilnehmer gesendet wird. Der A Teilnehmer (TAPI User) bekommt statt dessen die in "Exten" beim Rufaufbau angegebene Zielrufnummer als CallerID übermittelt.
>         - So sehe ich, wenn ich z.B. als TAPI User "10" den User "99" per CTI anrufe, bei mir im Telefondisplay einen Anruf von "99", und wenn ich den Hörer abhebe und Asterisk den Ruf aufbaut, sieht die "99" korrekterweise meine CallerID: "10".
>         - Patch für Asterisk 1.4: asterisk-1.4-exten-as-CLI-for-originator.diff
>       - Um diesen CallerID-Patch an Ihre Asterisk-Version anzupassen sind Grundkenntnissen in der C Programmierung hilfreich. Und eine derartige Anpassung ist nicht einfach.
>       - Sie müssten wie folgt vorgehen:
>         - Den asterisk-internen Ablauf von "Originate" verstehen.
>         - Sie wissen, wie ein Patch prinzipiell funktioniert und verstehen, was der Beispiel-Patch bewirken soll.
>         - Dann passen Sie Ihren Asterisk-Quelltext entsprechend an.
>         - Anhand Ihres alten und neuen Quelltextes erstellen Sie sich ein eigenen Patch.