[Problem] BLF / Pickup-Info-Dialog und PICKUPMARK

RcRaCk2k

Mitglied
Mitglied seit
4 Aug 2005
Beiträge
238
Punkte für Reaktionen
1
Punkte
16
Asterisk: v11.8.1
CPE: Grandstream GXP2170 HD

Servus Leute!

Ich habe ein Problem mit BLF und Call-Pickup.

Ich kann sehen, wenn jemand angerufen wird (Name wird rot) oder wenn jemand frei ist (Name ist grün).

Wenn ich nun den Anruf entgegen nehmen will, dann erhalte ich einen DECLINED zurück und das sieht im SIP-Protokoll wie folgt aus:

Code:
09:49:36.507707 IP (tos 0x0, ttl 64, id 12841, offset 0, flags [none], proto UDP (17), length 1170)    80.0.1.137.5060 > 185.0.0.176.5060: SIP, length: 1142
        NOTIFY sip:4986544****[email protected]:5060 SIP/2.0
        Via: SIP/2.0/UDP 80.0.1.137:5060;branch=z9hG4bK6c0682cd;rport
        Max-Forwards: 70
        From: <sip:[email protected]>;tag=as4a550efd
        To: <sip:4986544****[email protected]>;tag=253426481
        Contact: <sip:[email protected]:5060>
        Call-ID: [email protected]
        CSeq: 110 NOTIFY
        User-Agent: my-asterisk.pbx on Asterisk
        Subscription-State: active
        Event: dialog
        Content-Type: application/dialog-info+xml
        Content-Length: 656


        <?xml version="1.0"?>
					<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="8" state="full" entity="sip:[email protected]">
					<dialog id="17" call-id="[email protected]" local-tag="253426481" remote-tag="as4a550efd" direction="recipient">
					<remote>
					<identity display="Michael Rack, RSM Freilassing">sip:004986546***[email protected]</identity>
					<target uri="sip:004986546***[email protected]"/>
					</remote>
					<local>
					<identity display="Andreas Mayer">sip:004986544****[email protected]</identity>
					<target uri="sip:004986544****[email protected]"/>
					</local>\
					<state>early</state>
					</dialog>
					</dialog-info>[|sip]


09:49:36.527959 IP (tos 0x8, ttl 57, id 51749, offset 0, flags [none], proto UDP (17), length 513)
    185.0.0.176.5060 > 80.0.1.137.5060: SIP, length: 485
        SIP/2.0 200 OK
        Via: SIP/2.0/UDP 80.0.1.137:5060;branch=z9hG4bK6c0682cd;rport=5060
        From: <sip:[email protected]>;tag=as4a550efd
        To: <sip:4986544****[email protected]>;tag=253426481
        Call-ID: [email protected]
        CSeq: 110 NOTIFY
        Contact: <sip:4986544****[email protected]:5060>
        Supported: replaces, path, timer
        User-Agent: Grandstream GXP2170 1.0.8.47
        Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE, MESSAGE
        Content-Length: 0


09:49:43.794088 IP (tos 0x8, ttl 57, id 51752, offset 0, flags [+], proto UDP (17), length 1500)
    185.0.0.176.5060 > 80.0.1.137.5060: SIP, length: 1472
        INVITE sip:004986544****[email protected] SIP/2.0
        Via: SIP/2.0/UDP 185.0.0.176:5060;branch=z9hG4bK957482593;rport
        Route: <sip:voip.my-asterisk.pbx:5060;lr>
        From: "Max Mustermann" <sip:4986544****[email protected]>;tag=384013477
        To: <sip:004986544****[email protected]>
        Call-ID: [email protected]
        CSeq: 31 INVITE
        Contact: "Max Mustermann" <sip:4986544****[email protected]:5060>
        Authorization: Digest username="4986544****32", realm="my-asterisk.pbx", nonce="xxxxxxx", uri="sip:004986544****[email protected]", response="xxxxxxxxx", algorithm=MD5
        X-Grandstream-PBX: true
        Max-Forwards: 70
        User-Agent: Grandstream GXP2170 1.0.8.47
        Privacy: none
        P-Preferred-Identity: "Max Mustermann" <sip:4986544****[email protected]>
        P-Access-Network-Info: IEEE-EUI-48;eui-48-addr=00-1A-8C-4C-44-B8
        P-Emergency-Info: IEEE-EUI-48;eui-48-addr=00-0B-82-AA-5D-4F
        Supported: replaces, path, timer
        Replaces: [email protected];to-tag=as4a550efd;from-tag=253426481
        Allow: INVITE, ACK, OPTIONS, CANCEL, BYE, SUBSCRIBE, NOTIFY, INFO, REFER, UPDATE, MESSAGE
        Content-Type: application/sdp
        Accept: application/sdp, application/dtmf-relay
        Content-Length:   443


        v=0
        o=4986544****32 8001 8000 IN IP4 185.0.0.176
        s=SIP Call
        c=IN IP4 185.0.0.176
        t=0 0
        m=audio 5008 RTP/AVP 0 8 4 18 9 97 2 123 101
        a=sendrecv
        a=rtpmap:0 PCMU/8000
        a=ptime:20
        a=rtpmap:8 PCMA/8000
        a=rtpmap:4 G723/8000
        a=rtpmap:18 G729/8000
        a=fmtp:18[|sip]


09:49:43.795363 IP (tos 0x0, ttl 64, id 12843, offset 0, flags [none], proto UDP (17), length 527)
    80.0.1.137.5060 > 185.0.0.176.5060: SIP, length: 499
        SIP/2.0 100 Trying
        Via: SIP/2.0/UDP 185.0.0.176:5060;branch=z9hG4bK957482593;received=185.0.0.176;rport=5060
        From: "Max Mustermann" <sip:4986544****[email protected]>;tag=384013477
        To: <sip:004986544****[email protected]>
        Call-ID: [email protected]
        CSeq: 31 INVITE
        Server: my-asterisk.pbx on Asterisk
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
        Supported: replaces
        Contact: <sip:004986544****[email protected]:5060>
        Content-Length: 0




09:49:43.795857 IP (tos 0x0, ttl 64, id 12844, offset 0, flags [none], proto UDP (17), length 494)
    80.0.1.137.5060 > 185.0.0.176.5060: SIP, length: 466
        SIP/2.0 603 Declined
        Via: SIP/2.0/UDP 185.0.0.176:5060;branch=z9hG4bK957482593;received=185.0.0.176;rport=5060
        From: "Max Mustermann" <sip:4986544****[email protected]>;tag=384013477
        To: <sip:004986544****[email protected]>;tag=as3e8ad658
        Call-ID: [email protected]
        CSeq: 31 INVITE
        Server: my-asterisk.pbx on Asterisk
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
        Supported: replaces
        Content-Length: 0

Sprich ich erhalte im NOTIFY-XML folgende Informationen:
<dialog id="17" call-id="[email protected]" local-tag="253426481" remote-tag="as4a550efd" direction="recipient">

Grandstream versucht den Anruf an zu nehmen:
Replace: [email protected];to-tag=as4a550efd;from-tag=253426481

aber er bekomt ein SIP/2.0 603 Declined beide Endgeräte sind in der selben Pickup-Group und beide sind in der selben callgroup.

Ich nutze, um auch *8 zu unterstützen die Einstellung Set("SIP/498654******", "_PICKUPMARK=49865460xxxxx") um einen einfacheren Pickup via Application machen zu können.

Kann es sein, dass es Probleme gibt, wenn man PICKUPMARK verwendet und CALL-ID?
Aber das sollte doch nicht sein, PICKUPMARK ist ja eine Channel-Variable und CALL-ID ist eine von Asterisk erstellte ID zur eindeutigen Wiedererkennung des Calls.

Was kann es sein, dass ich per CALL-ID den Call nicht pickupen kann?
 
Okay, ich konnte nun das Problem selbst finden, indem ich den SourceCode durch studiert hatte.

Das Problem liegt darin, dass ich HINTS und EXTENSIONS in unterschiedlichen Kontexten habe. Nun gibt es ja die Möglichkeit in der sip.conf die Einstellung sip_cfg.notifycid == IGNORE_CONTEXT (notifycid=ignore-context) zu setzen, was wiederum jedoch bewirkt, dass das System intern auf den Kontext PICKUPMARK zurück greift.

Wenn nun die Channel-Variable PICKUPMARK nicht mit der Extension vom HINT übereinstimmt, kann Asterisk den Channel nicht finden und bricht ab.

Da ich aber meinen eigenen PICKUPMARK benötige, wie z.B. "Versand", "Buchhaltung" usw, meine HINTS aber 900, 910 usw. heißen, habe ich die PICKUP-APP gepatcht, so dass ich mehrere PICKUP-MARKS setzen kann.

Code:
Set("SIP/abcde", "_PICKUPMARK=Buchhaltung&910") in new stack
Patch: https://**********com/3qn8XJ11
PasteBin: 3qn8XJ11
 
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.