Yealink Forums
Problem with the call pick-up function. - Printable Version

+- Yealink Forums (http://forum.yealink.com/forum)
+-- Forum: IP Phone Series (/forumdisplay.php?fid=4)
+--- Forum: General topics (/forumdisplay.php?fid=15)
+--- Thread: Problem with the call pick-up function. (/showthread.php?tid=11547)



Problem with the call pick-up function. - benny - 11-23-2015 07:22 PM

Hey Guys,

i have a problem with the pick-up function.

My situation is the following:
I have 4 phones (T46G, T42G, Snom300, GigasetC610) and I'm using a free-pbx (I'm not the admin of this).
I configured the BLFs like this:
Type: BLF
Value: 1201
Name: testname
Extension: **

I tried the following combination of calls. Sometimes the pick-up worked and sometimes not.
Caller -> Callee -> Pick-Up by -> Works?
Snom300 -> C610 -> T46G/T42G -> yes
Snom300 -> T46G/T42G -> T42G/T46G -> yes
T42G -> Snom300/C610 -> T46G -> no
T46G -> Snom300/C610 -> T42G -> no

In the cases where the pick-up does not work, I observed a strange behaviour.
The phone of the caller is still ringing, the phone, which picked up the call, shows that it picked up the call and the phone of the callee says, that the call was completed elsewhere.

I don't know if i made something wrong or do i have to add something in the settings of the phones or might this be a problem with the server?

I hope you can help me identify the problem.

Thanks in regards,

Benny


RE: Problem with the call pick-up function. - James_Yealink - 11-24-2015 05:41 AM

Hello Benny,

Can you please get a pcap trace in T46G and T42G?
Start pcap feature under Setting-> Configuration, reproudce the issue and export them.

Regards,


RE: Problem with the call pick-up function. - benny - 11-25-2015 05:06 PM

Hello James,

thanks for the quick response.
I got the pcap trace and took a look into it with wireshark.

I think there is a problem with the Asterisk-Server and the setting "sendrpid".
This option is set to "pai".
If this option is set to "no", it works.
But there is no CallerID on the phone that is picking up the call.

If you still need pcap trace, let me know. I will pm it to you.

Btw these are the firmware-versions on the phones:
29.80.0.70 -> T42G
28.80.0.70 -> T46G

Greetings,

Benny


RE: Problem with the call pick-up function. - Killoughl - 12-02-2015 01:51 PM

I too have the same problem.


RE: Problem with the call pick-up function. - benny - 12-08-2015 06:09 PM

Hello again,

I find the source of this problem. This has nothing to with the settings in Asterisk.
It is problem with the code of Asterisk.
The Admin told me, that they patched the Asterisk server, so that you can pick up calls out of a waiting loop if you are not an agent.

This is code before the patch:

Code:
if (sip_cfg.pedanticsipchecking) {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" call-id=\"pickup-%s\" local-tag=\"%s\" remote-tag=\"%s\" direction=\"recipient\">\n",
            exten, p->callid, p->theirtag, p->tag);  /*Changed*/
} else {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" call-id=\"pickup-%s\" direction=\"recipient\">\n",
            exten, p->callid); /*Changed*/
}
ast_str_append(tmp, 0,
        "<remote>\n"
        /* See the limitations of this above.  Luckily the phone seems to still be
           happy when these values are not correct. */
        "<identity display=\"%s\">%s</identity>\n"
        "<target uri=\"%s\"/>\n" /*Changed*/
        "</remote>\n"
        "<local>\n"
        "<identity display=\"%s\">%s</identity>\n"
        "<target uri=\"%s\"/>\n"
        "</local>\n",
        remote_display, remote_target, remote_target, local_display, local_target, local_target); /*Changed*/
} else {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n", exten);
}


This is the code after the patch:

Code:
/* We create a fake call-id which the phone will send back in an INVITE
                                   Replaces header which we can grab and do some magic with. */
if (sip_cfg.pedanticsipchecking) {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n",
            exten);
} else {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n",
            exten);
}
ast_str_append(tmp, 0,
        "<remote>\n"
        /* See the limitations of this above.  Luckily the phone seems to still be
           happy when these values are not correct. */
        "<identity display=\"%s\">%s</identity>\n"
        "<target uri=\"sip:**%s@%s\"/>\n"
        "</remote>\n"
        "<local>\n"
        "<identity display=\"%s\">%s</identity>\n"
        "<target uri=\"%s\"/>\n"
        "</local>\n",
        remote_display, remote_target, exten, p->fromdomain, local_display, local_target, local_target);
} else {
    ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n", exten);
}

I'm trying to figure out, what exactly is causing the problem and i'm trying to find a solution with the function active.
I would be happy, if someone can help me out.

Greetings,

Benny