Hello everyone,

I'm runing Kamailio 5.2.4 with enabled mysql, usrlocdb, presence, aliasdb, auth and NAT.
I can register clients, establish calls and video calls, send IMs, etc. imc_rooms and imc_members tables were created when kamailio was installed. I've also checked imc-create.sql script and tables are correctly created.

I'm trying to configure the IMC module, but my problem is that I'm not receiving system messages and messages sent to a room aren't correctly broadcasted to its members.

I'm using following code provided by the IMC module documentation:

modparam("imc", "rooms_table", "imc_rooms")

modparam("imc", "members_table", "imc_members")

modparam("imc", "hash_size", 8)

modparam("imc", "imc_cmd_start_char", "#")

## route block ###

        if(is_method("MESSAGE") && (uri=~ "sip:chat-[0-9]+@") || (uri=~ "sip:chat-manager@")) {

                xlog("L_INFO", "going to imc: From [$fu] To [$tu] MSG [$rb]\n");

                if(imc_manager())

                        #log("MESSAGE received -> processing with imc\n");

                        sl_send_reply("200", "ok - imc_manager()");

                else

                        sl_send_reply("500", "command error");

        exit;

        }

I am creating a chat room with the following message sent to sip:chat-manager@x.x.x.x: "#create chat-111"

 

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: INFO: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} <script>: going to imc: From [sip:david@x.x.x.x:5060] To [sip:chat-manager@x.x.x.x:5060] MSG [#create chat-111]

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc.c:493]: ki_imc_manager(): found command

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_cmd.c:144]: imc_parse_cmd(): command: [create]

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_cmd.c:149]: imc_parse_cmd(): parameter 0=[chat-111]

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_cmd.c:169]: imc_handle_create(): new room [chat-111]

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_cmd.c:184]: imc_handle_create(): added room uri= sip:chat-111@x.x.x.x

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_mng.c:320]: imc_add_member(): [uri]= sip:david@x.x.x.x

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_mng.c:324]: imc_add_member(): [user]= david

Aug 27 15:16:20 aslo_kamailio /usr/sbin/kamailio[17448]: DEBUG: {1 1 MESSAGE 670EAF5439D284FD2EBABC7ADBEAC47B12B07C1E} imc [imc_cmd.c:193]: imc_handle_create(): added the owner as the first member [sip:david@x.x.x.x]

 

 

Then, from a different user, I send the following command to sip:chat-111@x.x.x.x:

"#join"

 

 

Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: INFO: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} <script>: going to imc: From [sip:eduardo@x.x.x.x:5060] To [sip:chat-111@x.x.x.x:5060] MSG [#join]
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc.c:493]: ki_imc_manager(): found command
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:144]: imc_parse_cmd(): command: [join]
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:290]: imc_handle_join(): found room [chat-111]
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:295]: imc_handle_join(): room [chat-111] is public
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:298]: imc_handle_join(): adding new member [eduardo]
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_mng.c:320]: imc_add_member(): [uri]= sip:eduardo@x.x.x.x
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_mng.c:324]: imc_add_member(): [user]= eduardo
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:1097]: imc_room_broadcast(): nr = 2
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:1101]: imc_room_broadcast(): to uri = sip:david@x.x.x.x
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:429]: t_uac_prepare(): next_hop=<sip:david@x.x.x.x>
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:152]: dlg2hash(): hashid 34678
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:656]: send_prepared_request_impl(): uac: 0x7f894faaed28 branch: 0 to x.x.x.x:5060
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [../../core/onsend.h:69]: run_onsend(): required parameters are not available - ignoring
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} imc [imc_cmd.c:1101]: imc_room_broadcast(): to uri = sip:eduardo@x.x.x.x
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:429]: t_uac_prepare(): next_hop=<sip:eduardo@x.x.x.x>
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:152]: dlg2hash(): hashid 34679
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [uac.c:656]: send_prepared_request_impl(): uac: 0x7f894faabfa8 branch: 0 to x.x.x.x:5060
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} tm [../../core/onsend.h:69]: run_onsend(): required parameters are not available - ignoring
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} <core> [core/receive.c:354]: receive_msg(): request-route executed in: 438 usec
Aug 27 15:24:10 aslo_kamailio /usr/sbin/kamailio[17452]: DEBUG: {1 1 MESSAGE 1A16E53DE339181E4F970B9DC16BB8E18B0DBF98} <core> [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)

 

 

And finally, I send messages from a user to sip:chat-111@x.x.x.x:

 

 

Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: INFO: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <script>: going to imc: From [sip:eduardo@x.x.x.x:5060] To [sip:chat-111@x.x.x.x:5060] MSG [Hello Everyone]
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} imc [imc_mng.c:371]: imc_get_member(): found member
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} imc [imc_cmd.c:1057]: imc_handle_message(): broadcast to room [sip:chat-111@x.x.x.x]
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} imc [imc_cmd.c:1097]: imc_room_broadcast(): nr = 2
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} imc [imc_cmd.c:1101]: imc_room_broadcast(): to uri = sip:david@x.x.x.x
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} tm [uac.c:429]: t_uac_prepare(): next_hop=<sip:david@x.x.x.x>
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} tm [uac.c:152]: dlg2hash(): hashid 50535
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} tm [uac.c:656]: send_prepared_request_impl(): uac: 0x7f894faaed28 branch: 0 to x.x.x.x:5060
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} tm [../../core/onsend.h:69]: run_onsend(): required parameters are not available - ignoring
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} imc [imc_cmd.c:1101]: imc_room_broadcast(): to uri = sip:eduardo@x.x.x.x
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <core> [core/receive.c:354]: receive_msg(): request-route executed in: 318 usec
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <core> [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: message repeated 5 times: [ DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <core> [core/usr_avp.c:636]: destroy_avp_list(): destroying list (nil)]
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <core> [core/xavp.c:495]: xavp_destroy_list(): destroying xavp list (nil)
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17449]: DEBUG: {1 1 MESSAGE CD6C7043E1FF56D32DEAC097718DBE9D35E9FAA2} <core> [core/receive.c:458]: receive_msg(): cleaning up
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17456]: DEBUG: tm [t_reply.c:1266]: t_should_relay_response(): ->>>>>>>>> T_code=0, new_code=408
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17456]: DEBUG: tm [t_reply.c:1494]: t_should_relay_response(): rps completed - uas status: 0 branch: 0
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17456]: DEBUG: tm [t_reply.c:2117]: local_reply(): branch=0, save=0, winner=0
Aug 27 15:32:45 aslo_kamailio /usr/sbin/kamailio[17456]: DEBUG: tm [t_reply.c:2156]: local_reply(): local transaction completed 408/0 (totag retr: 0/0)

 

 

This is the sip trace when I send a message from eduardo to the conference chat-111 (being david the other user in the room):

 

 

23547 84639.636444071 148.x.x.x → 192.y.y.y SIP 602 Request: MESSAGE sip:chat-111@148.z.z.z:5060 | (text/plain)
23548 84639.636859382 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23549 84639.636936241 192.y.y.y → 148.x.x.x SIP 464 Status: 200 ok - imc_manager() |
23550 84640.123596134 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23551 84641.123591836 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23552 84643.123615246 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23553 84647.123607208 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23556 84651.123605257 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23557 84655.123586963 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23561 84659.123587125 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23563 84663.123605383 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23564 84665.297801577 192.y.y.y → 148.x.x.x UDP 48 5060 → 50613 Len=4
23565 84667.123592273 192.y.y.y → 148.z.z.z SIP 492 Request: MESSAGE sip:david@148.z.z.z | (text/plain)
23566 84669.063509921 148.x.x.x → 192.y.y.y STUN 72 Binding Request

 

Any help is greatly appreciated.

Best regards, David Tirado