Name des Rufziels anzeigen

wurstsalat

Neuer User
Mitglied seit
3 Jun 2009
Beiträge
35
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe eine eigentlich ganz banale Frage:

Wie bekomme ich es hin, dass der Anrufer direkt nach dem Wählen einer Nummer den Namen des angerufenen im Display angezeigt bekommt. Geht das überhaupt und wenn ja, wie?

Also, ich rufe einen anderen SIP-Teilnehmer innerhalb meines Asterisk an und möchte während es klingelt bereits den aufgelösten Namen sehen anstatt nur die gewählte Nummer.

Danke schon mal für Hilfe.
 
Hallo,

bei manchen Telefonen lässt sich das recht einfach mit sendtext() machen. Davor musst Du natürlich den Namen aus einer Datenbank holen, oder zB. per AGI aus der sip.conf auslesen.

Rentier
 
Ist das keine Standardfunktionalität von Asterisk? Die Namen zu den von ihm verwalteten Nebenstellen sollte Asterisk doch eigentlich von Haus aus kennen.
 
Das kann doch eigentlich nicht sein.

Wenn A über SIP B anruft muss A doch im Display den caller-id Eintrag von B aus der sip.conf angezeigt bekommen. Sowas wie Calledid(name) oder so ähnlich.
 
Also wenn ich diesen Patch richtig lese ist doch das Ergebnis davon bei 1.6.1 mit integriert?

Ich nutze 1.6.1.20 und da gibt es die Funktion CALLEDID nicht. :-/
 
Nein, die Funktion heisst CalledID.
https://issues.asterisk.org/view.php?id=8824

This bug note will cover the dial-plan usage, a further note will explain the
internal API changes.

I have had some difficultly with the current trunk builds (even before I have
applied my patch) so there are two versions of this patch. One against stable
(1.4.11) and the other against trunk (80894).

Hopefully this makes it easier for interest parties to verify the patch while
till conforming to the bug submission guidelines.

Be aware, the code alters the caller ID passing mechanism in asterisk. Some
channel drivers have not been patched to support this change. Currently patched
are SIP, IAX2, Zap, Skinny, H323, Local and Phone.

For the most common case (dialing a registered peer) there is the new Dial()
flag 'u' which automatically gets the caller ID information from the dialed
channel and passes it to the calling channel.

The CALLEDID() function replaces the RemoteParty() application, it can be used
to name channels that otherwise have no set callerid such as trunks and other
internal applications (VoiceMailMain, MeetMe etc.)

And one more thing...

Updating the caller/called ID on attended transfer now works for SIP channels.
 
Zuletzt bearbeitet:
Ah, ok, jetzt versteh ich auch was du willst..

Hm.. wenns nur um die internen gespräche geht, mach das doch über die ${EXTEN}, ne IF und Sendtext..

Code:
exten => _30X,n,Dial,SIP/${EXTEN}|55|Ttr
exten => _30X,n,Set(calledname=${IF($[ ${EXTEN} = 300]?"Sip 1")})
exten => _30X,n,Set(calledname=${IF($[ ${EXTEN} = 301]?"Sip 2")})
exten => _30X,n,SendText(${calledname})

ist ungestestet, könnte aber funktionieren
 
Naja, das soll dann schon auch über chan_capi für Gespräche an die Hicom über S2m gehen. Sowas ist für mich eigentlich wie gesagt eine Grundfunktionalität.

Ist eben schade, dass der Patch noch nicht in der 1.6.1.20 drin ist.

Und wenn ich versuche den Patch von der verlinkten Seite selbst zu installieren bekomme ich nur Fehler

Code:
patch -p0 < bug8824.patch

Da erzählt er mir andauernd er könne die Files nicht finden.
 
Ah, ok, jetzt versteh ich auch was du willst..

Hm.. wenns nur um die internen gespräche geht, mach das doch über die ${EXTEN}, ne IF und Sendtext..

Code:
exten => _30X,n,Dial,SIP/${EXTEN}|55|Ttr
exten => _30X,n,Set(calledname=${IF($[ ${EXTEN} = 300]?"Sip 1")})
exten => _30X,n,Set(calledname=${IF($[ ${EXTEN} = 301]?"Sip 2")})
exten => _30X,n,SendText(${calledname})

ist ungestestet, könnte aber funktionieren

Funktioniert leider nicht.
Wenn das Set(calledname) in der Reihenfolge nach dem Dial steht wird es nicht ausgeführt.
Steht es for dem Dial wird es ausgeführt.
Und das SendText wird überhaupt nicht ausgeführt.
 
Probier das mal.

Code:
exten => _30X,1,NoCDR()
exten => _30X,n,Dial,SIP/${EXTEN}|55|Ttr
exten => _30X,n,Set(calledname=${IF($[ "${EXTEN}" = "300"]?"Sip 1")})
exten => _30X,n,Set(calledname=${IF($[ "${EXTEN}" = "301"]?"Sip 2")})
exten => _30X,n,SendText(${calledname})

Das funktioniert bei mir
 
Probier das mal.

Code:
exten => _30X,1,NoCDR()
exten => _30X,n,Dial,SIP/${EXTEN}|55|Ttr
exten => _30X,n,Set(calledname=${IF($[ "${EXTEN}" = "300"]?"Sip 1")})
exten => _30X,n,Set(calledname=${IF($[ "${EXTEN}" = "301"]?"Sip 2")})
exten => _30X,n,SendText(${calledname})

Das funktioniert bei mir

Ich scheitere schon bei "Dial,SIP". Da kommt "no application for extension".
Ich hab folgendes:

Code:
[default]
exten => 1070,1,NoCDR()
exten => 1070,n,Dial(SIP/${EXTEN})|55|Ttr
exten => 1070,n,Set(CALLEDNAME=${SIPPEER(${EXTEN},callerid_name)})
exten => 1070,n,SendText(${CALLEDNAME})

exten => 1075,1,NoCDR()
exten => 1075,n,Dial(SIP/${EXTEN})|55|Ttr
exten => 1075n1,Set(CALLEDNAME=${SIPPEER(${EXTEN},callerid_name)})
exten => 1075,n,SendText(${CALLEDNAME})

und das ergibt

Code:
  == Using SIP RTP CoS mark 5
    -- Executing [1070@default:1] NoCDR("SIP/1075-000000a7", "") in new stack
    -- Executing [1070@default:2] Dial("SIP/1075-000000a7", "SIP/1070") in new s                                                                             tack
  == Using SIP RTP CoS mark 5
    -- Called 1070
    -- SIP/1070-000000a8 is ringing
    -- SIP/1070-000000a8 answered SIP/1075-000000a7
    -- Native bridging SIP/1075-000000a7 and SIP/1070-000000a8
  == Spawn extension (default, 1070, 2) exited non-zero on 'SIP/1075-000000a7'
 
Hallo Arcon,

das Sendtext kann aber so eigentlich nur ausgeführt werden, wenn das Dial mit Timeout fehlschlägt. IMHO muss das Sendtext vor das Dial. Allerdings ist dann die Frage, ob das Telefon die Meldung weiterhin anzeigt, wenn ein Call-in-progress oder dergleichen kommt.

Ich hab das in meinem Telefonbuch-AGI mit SEND TEXT, danach wird das AGI beendet und das Dial über den Dialplan mit der zuvor vom AGI definierten Zielrufnummer ausgeführt. Die ISDN-Telefone zeigen den Namen für ein paar Sekunden an, während es klingelt. Die SIP-Telefone waren für Sendtext wahrscheinlich zu preiswert.

Edit:
@wurstsalat, neuere Asterisk Versionen mögen lieber die Schreibweise mit Klammern. Aber wie gesagt, ich meine das Dial muss ans Ende.
 
Okay, habe es jetzt wie folgt geändert:

Code:
[default]
exten => 1070,1,NoCDR()
exten => 1070,1,Set(CALLEDNAME=${SIPPEER(${EXTEN},callerid_name)})
exten => 1070,n,SendText(${CALLEDNAME})
exten => 1070,n,Dial(SIP/${EXTEN})|55|Ttr

exten => 1075,1,NoCDR()
exten => 1075,n,Set(CALLEDNAME=${SIPPEER(${EXTEN},callerid_name)})
exten => 1075,n,SendText(${CALLEDNAME})
exten => 1075,n,Dial(SIP/${EXTEN})|55|Ttr

Jetzt wird die Variable CALLEDNAME wieder gefüllt und der Text anscheinend auch gesendet. Aber an den Voip-Clients leider nicht angezeigt..

Code:
 == Using SIP RTP CoS mark 5
    -- Executing [1075@default:1] NoCDR("SIP/1070-000000b3", "") in new stack
    -- Executing [1075@default:2] Set("SIP/1070-000000b3", "CALLEDNAME=Wurst, Hans") in new stack
    -- Executing [1075@default:3] SendText("SIP/1070-000000b3", "Wurst, Hans") in new stack
    -- Executing [1075@default:4] Dial("SIP/1070-000000b3", "SIP/1075") in new stack
  == Using SIP RTP CoS mark 5
    -- Called 1075
    -- SIP/1075-000000b4 is ringing
    -- SIP/1075-000000b4 answered SIP/1070-000000b3
    -- Native bridging SIP/1070-000000b3 and SIP/1075-000000b4
  == Spawn extension (default, 1075, 4) exited non-zero on 'SIP/1070-000000b3'
 
Ich habe nochmal eine dumme Anfängerfrage in dem Zusammenhang.

Laut SIP RFC3261 http://tools.ietf.org/html/rfc3261 sollte doch eigentlich bereits im Header beim INVITE der Name des Anrufenden und des Angerufenen enthalten sein, also in etwa

Code:
      INVITE sip:[email protected] SIP/2.0
      Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
      Max-Forwards: 70
      To: Bob <sip:[email protected]>
      From: Alice <sip:[email protected]>;tag=1928301774
      Call-ID: [email protected]
      CSeq: 314159 INVITE
      Contact: <sip:[email protected]>
      Content-Type: application/sdp
      Content-Length: 142

sprich, Alice ruft Bob an. Die Namen sind also schon im Header enthalten.

Bei meinem Asterisk sind die Namen nicht im Header enthalten.

Code:
INVITE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/TCP 192.168.1.149:3822;branch=z9hG4bK-d8754z-9f01b74a4b708b04-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:[email protected]:3823;rinstance=8f3067c0aac0abc4;transport=TCP>
To: <sip:[email protected]:5060>
From: <sip:[email protected]:5060>;tag=cf41cd30
Call-ID: NjU2YzU2NmY3NDBiZjA5MDIzYTAwNTM0MjRmNTAwODI.
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REGISTER, SUBSCRIBE, NOTIFY, REFER, INFO
Content-Type: application/sdp
Supported: replaces
User-Agent: 3CXPhone 4.0.10858.0
Content-Length: 282

Kann Asterisk das wirklich nicht oder muss einfach nur in der sip.conf was angepasst werden oder ein Parameter beim Dialstring mitgegeben werden damit die Namen schon im Header enthalten sind?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.