I'm testing here to use multiple domains with microsoft teams and I'm
having trouble making and receiving calls. It seems that when connecting a
call, kamailio keeps the tls connection active and reuses it, making the
domain parameters used the wrong ones for new call. Can someone help me, or
give a tip?
--
Att,
Lean
Summary: Using Kamailio to load balance between Asterisk servers. Trouble getting call queuing working because can't get device state hints to work reliably.
-
Hello
I'd be grateful for any advice that can be offered for this problem to do with presence and call queueing.
I have 3 Kamailio (v5.3.4) servers that load-balance incoming traffic from various sources: a legacy PBX, soft phone clients, and a SIP trunking service.
Sitting behind the 3 Kamailio servers are 2 Asterisk (v16 LTS) servers.
Kamailio acts as a registrar and user location service. Asterisk is routing calls and (should be) providing device state information for each extension.
An external script builds a list of PJSIP endpoints based on the content of the Kamailio subscriber table, and deploys it to the Asterisk servers whenever a change is detected. The AOR for each record is configured to point to Kamailio. No authentication details are attached to these endpoints, as Kamailio is doing authentication before dispatching a request to Asterisk.
Whenever Kamailio receives an INVITE, it passes this to an Asterisk server using the dispatcher module (round-robin algorithm '4'); asterisk then processes the request.
At the moment, everything is working except for presence/device states and call queueing.
I've tried to set up 'presence', 'pua', 'dialog' and '(presence/pua)_dialoginfo' modules on Kamailio with limited success. The presence state when a user toggles 'do not disturb' on their soft phone is passed to other users who are subscribed (watching), however when a user makes a call, no presence updates are seen by subscribed users (the extensions show as 'Idle' or 'Available' instead of 'In Use' or 'Busy').
Asterisk is able to report that an extension is 'Ringing' or 'InUse' when a call is made to that extension, because an INVITE to an internal extension matches a pattern in the dialplan and Asterisk routes it to a PJSIP endpoint with the same name. However, when somebody makes a call, Asterisk is unable to track the state of the extension making the call because the call is going via Kamailio so Asterisk is not seeing the caller as an internal extension. We need a way to make Asterisk think the call is coming from an internal device if the caller ID matches a PJSIP endpoint.
Both Asterisk servers are configured to share device state updates with each other, and this is working.
Without being able to see device state for an internal calling party, we will be unable to reliably set up call queues in Asterisk.
Using the 'mohqueue' module on Kamailio is not something we want to do because of its reliance on a database, which is creating a single point of failure - if the database server is down for any reason, Kamailio refuses to start.
Ideally, we would achieve some form of distributed call queueing, however the simplest option seems to be setting up a queue on one Asterisk server and having an active-passive high availability configuration, should a server go down.
I'm looking for advice on how best to keep track of what is happening in a call, and for Asterisk to know the states of each extension and make these available in a dialplan hint. Or any other suggestions that might help to achieve call queueing in this setup.
Thank you
Hello,
Is there any way in Kamailio to get the profile values the current dialog
is part of?
For example, I have one dialog with the following profiles:
profiles: {
{
test: abcd
}
test: 1234
}
I need in the reply route to get the values for the test dialog profile.
(abcd, 1234). I know I can use get_profile_size, but that will give the
number of profiles of the current dialog, but I need the values to loop
through.
Thanks.
Hello all,
SIP/UE (boghe or imsdroid) client registered to Kamailio makes call to an Asterisk registered SIP phone is successful:
[UE]-Kamailio--->INVITE--->Asterisk16-[phone]
[UE]-Kamailio--->200 OK with to_tag--->Asterisk16-[phone]
But in reverse direction for a call, Kamailio does not return the SIP OK so no to_tag is sent so call fails to ring and complete:
[phone]-Asterisk16 --->INVITE--->Kamailio
Where the UE device never receives the INVITE, Asterisk never gets and 200 OK message with the to_tag from the I-CSCF, the call flow itself gets lost in Kamailio, where the P-CSCF sends final INVITE to I-CSCF and and ultimately a 604 HSS user unknown message is sent back to Asterisk from the I-CSCF.
Basically Im using the default "sample" configs for both the P and the I-CSCF. Our sauce is in the S-CSCF for out going calls that originate by a registered UE.
Any insight or sample Kamailio configuration that Im lacking?
Has anyone done this and could share the asterisk and Kamailio script snippets that make it possible.
Thanks,
_Martin
Hi,
Could anyone please give me some idea on how video call works in IMS.
Does it need rtp proxy to work?
Or is it the same way how voice call works ?
It would be good , if anybody share some links on video calls as well voice
conferencing.
Thanks,
pavithra
Hello,
I'm revisiting some initial issues I had with P-CSCF. I could not set the hashing type in my PCSCF (kamalio 5.2.2) so I simply commented it out and moved on.
But now, I may need it as the P-CSCF is not handling INVITES coming from I-CSCF that originated from external SIP server, where the endpoint (UE) is registered to the IMS but the P-CSCF sends the INVITE back to the S rather that the registered UE and fails.
kamailio.cfg:
modparam("ims_usrloc_pcscf", "hashing_type", 1)
So with that, when I set the hashing_type to 1,1 or 2 I get the following starting the pcscf:
Starting the P-CSCF:
Jun 17 08:25:30 ubuntu kamailio_pcscf[5753]: * Not starting Kamailio IMS P-CSCF: invalid configuration file!
Jun 17 08:25:30 ubuntu kamailio_pcscf[5753]: *
Jun 17 08:25:30 ubuntu kamailio_pcscf[5753]: * 0(5766) ERROR: <core> [core/modparam.c:140]: set_mod_param_regex(): parameter <hashing_type> of type <2> not found in module <ims_usrloc_pcscf>
Jun 17 08:25:30 ubuntu kamailio_pcscf[5753]: 0(5766) CRITICAL: <core> [core/cfg.y:3510]: yyerror_at(): parse error in config file /etc/kamailio/pcscf/kamailio.cfg, line 364, column 47: Can't set module parameter
Am I missing some module that I did not include at compile time? According to the docs, it has no additional dependencies other than the ims_usrloc_pcscf.so
https://kamailio.org/docs/modules/5.0.x/modules/ims_usrloc_pcscf.html#idp35…
Any help is appreciated.
Thanks,
_Martin
Hello all,
Im trying to call t_relay() with host and port as documented in:
https://www.kamailio.org/docs/modules/5.2.x/modules/tm.html
However, I get a subst_str(): no match on P-CSCF start and therefore fails.
Is t_relay(host, port) supported as documented?
Am I missing something?
Thanks,
_Martin
Hello!
I'm trying to manually reproduce expired transactions which couldn't be
cleared.
I had one idea, but it was unsuccessful. I tried to send SIGSTOP to a group
of Kamailio processes while the transaction is live. The idea is to freeze
processes for a while, then continue to work, so that by this time the
transaction deletion time was missed. But after a few seconds, the
transaction is still cleared.
Do you have any ideas for reproduction?
P.S. I'm sorry If you received my incoherent mails. These were attempts to
reply to the thread, seems to be my mail client or sr-users mailing list
doesn't support In-Reply-To header.