mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2682 lines
79 KiB
2682 lines
79 KiB
dialog Module
|
|
|
|
Bogdan-Andrei Iancu
|
|
|
|
Voice Sistem SRL
|
|
|
|
Carsten Bock
|
|
|
|
ng-voice.com
|
|
|
|
Edited by
|
|
|
|
Bogdan-Andrei Iancu
|
|
|
|
Carsten Bock
|
|
|
|
Alex Balashov
|
|
|
|
<abalashov@evaristesys.com>
|
|
|
|
Olle E. Johansson
|
|
|
|
<oej@edvina.net>
|
|
|
|
Surendra Tiwari
|
|
|
|
<surendratiwari3@gmail.com>
|
|
|
|
Julien Klingenmeyer
|
|
|
|
<julien.klingenmeyer@corp.ovh.com>
|
|
|
|
Copyright © 2006 Voice Sistem SRL
|
|
|
|
Copyright © 2011, 2022 ng-voice GmbH, Carsten Bock,
|
|
http://www.ng-voice.com
|
|
__________________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1. Overview
|
|
2. How it works
|
|
3. Dialog states
|
|
4. Dialog profiling
|
|
5. Dependencies
|
|
|
|
5.1. Kamailio Modules
|
|
5.2. External Libraries or Applications
|
|
|
|
6. Parameters
|
|
|
|
6.1. enable_stats (integer)
|
|
6.2. hash_size (integer)
|
|
6.3. rr_param (string)
|
|
6.4. dlg_flag (integer)
|
|
6.5. timeout_avp (string)
|
|
6.6. default_timeout (integer)
|
|
6.7. early_timeout (integer)
|
|
6.8. noack_timeout (integer)
|
|
6.9. end_timeout (integer)
|
|
6.10. dlg_extra_hdrs (string)
|
|
6.11. dlg_match_mode (integer)
|
|
6.12. detect_spirals (integer)
|
|
6.13. db_url (string)
|
|
6.14. db_mode (integer)
|
|
6.15. db_update_period (integer)
|
|
6.16. db_fetch_rows (integer)
|
|
6.17. db_skip_load (integer)
|
|
6.18. table_name (string)
|
|
6.19. call_id_column (string)
|
|
6.20. from_uri_column (string)
|
|
6.21. from_tag_column (string)
|
|
6.22. to_uri_column (string)
|
|
6.23. to_tag_column (string)
|
|
6.24. from_cseq_column (string)
|
|
6.25. to_cseq_column (string)
|
|
6.26. from_route_column (string)
|
|
6.27. to_route_column (string)
|
|
6.28. from_contact_column (string)
|
|
6.29. to_contact_column (string)
|
|
6.30. from_sock_column (string)
|
|
6.31. to_sock_column (string)
|
|
6.32. h_id_column (string)
|
|
6.33. h_entry_column (string)
|
|
6.34. state_column (string)
|
|
6.35. start_time_column (string)
|
|
6.36. timeout_column (string)
|
|
6.37. sflags_column (string)
|
|
6.38. toroute_name_column (string)
|
|
6.39. vars_table_name (string)
|
|
6.40. vars_h_id_column (string)
|
|
6.41. vars_h_entry_column (string)
|
|
6.42. vars_key_column (string)
|
|
6.43. vars_value_column (string)
|
|
6.44. profiles_with_value (string)
|
|
6.45. profiles_no_value (string)
|
|
6.46. bridge_controller (string)
|
|
6.47. bridge_contact (string)
|
|
6.48. initial_cbs_inscript (int)
|
|
6.49. send_bye (int)
|
|
6.50. dlg_filter_mode (int)
|
|
6.51. wait_ack (int)
|
|
6.52. ka_timer (int)
|
|
6.53. ka_interval (int)
|
|
6.54. ka_failed_limit (int)
|
|
6.55. timeout_noreset (int)
|
|
6.56. timer_procs (int)
|
|
6.57. enable_dmq (int)
|
|
6.58. track_cseq_updates (int)
|
|
6.59. lreq_callee_headers (string)
|
|
6.60. event_callback (str)
|
|
6.61. h_id_start (int)
|
|
6.62. h_id_step (int)
|
|
6.63. keep_proxy_rr (string)
|
|
6.64. bye_early_code (int)
|
|
6.65. bye_early_reason (string)
|
|
6.66. dlg_ctxiuid_mode (int)
|
|
6.67. debug_variables (int)
|
|
6.68. dlg_mode (int)
|
|
|
|
7. Functions
|
|
|
|
7.1. set_dlg_profile(profile[, value])
|
|
7.2. unset_dlg_profile(profile[, value])
|
|
7.3. is_in_profile(profile[, value])
|
|
7.4. get_profile_size(profile[, value], size)
|
|
7.5. dlg_isflagset(flag)
|
|
7.6. dlg_setflag(flag)
|
|
7.7. dlg_resetflag(flag)
|
|
7.8. dlg_bye(side)
|
|
7.9. dlg_refer(side, address)
|
|
7.10. dlg_manage()
|
|
7.11. dlg_bridge(from, to, op)
|
|
7.12. dlg_get(callid, ftag, ttag)
|
|
7.13. dlg_get_var(callid, ftag, ttag, name, dst)
|
|
7.14. dlg_set_var(callid, ftag, ttag, name, value)
|
|
7.15. is_known_dlg()
|
|
7.16. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.17. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.18. dlg_set_property(attr)
|
|
7.19. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
7.20. dlg_set_ruri()
|
|
7.21. dlg_db_load_callid(cival)
|
|
7.22. dlg_db_load_extra()
|
|
7.23. dlg_reset_property(attr)
|
|
7.24. dlg_req_within(side, method, [headers], [content_type,
|
|
content])
|
|
|
|
7.25. dlg_set_state(newstate)
|
|
|
|
8. Statistics
|
|
|
|
8.1. active_dialogs
|
|
8.2. early_dialogs
|
|
8.3. processed_dialogs
|
|
8.4. expired_dialogs
|
|
8.5. failed_dialogs
|
|
|
|
9. RPC Commands
|
|
|
|
9.1. dlg.list
|
|
9.2. dlg.list_ctx
|
|
9.3. dlg.list_match
|
|
9.4. dlg.list_match_ctx
|
|
9.5. dlg.dump_file
|
|
9.6. dlg.dlg_list
|
|
9.7. dlg.dlg_list_ctx
|
|
9.8. dlg.terminate_dlg
|
|
9.9. dlg.end_dlg
|
|
9.10. dlg.set_state
|
|
9.11. dlg.profile_get_size
|
|
9.12. dlg.profile_list
|
|
9.13. dlg.bridge_dlg
|
|
9.14. dlg.stats_active
|
|
9.15. dlg.is_alive
|
|
9.16. dlg.briefing
|
|
|
|
10. Exported Variables
|
|
|
|
10.1. $DLG_count
|
|
10.2. $DLG_status
|
|
10.3. $DLG_lifetime
|
|
10.4. $dlg(...)
|
|
10.5. $dlg_ctx(...)
|
|
10.6. $dlg_var(key)
|
|
|
|
11. Event Routes
|
|
|
|
11.1. event_route[dialog:start]
|
|
11.2. event_route[dialog:end]
|
|
11.3. event_route[dialog:failed]
|
|
|
|
2. Developer Guide
|
|
|
|
1. Available Functions
|
|
|
|
1.1. register_dlgcb (dialog, type, cb, param, free_param_cb)
|
|
|
|
1.2. terminate_dlg (dlg, hdrs)
|
|
|
|
3. Frequently Asked Questions
|
|
|
|
List of Examples
|
|
|
|
1.1. Set enable_stats parameter
|
|
1.2. Set hash_size parameter
|
|
1.3. Set rr_param parameter
|
|
1.4. Set timeout_avp parameter
|
|
1.5. Set default_timeout parameter
|
|
1.6. Set early_timeout parameter
|
|
1.7. Set noack_timeout parameter
|
|
1.8. Set end_timeout parameter
|
|
1.9. Set dlf_extra_hdrs parameter
|
|
1.10. Set dlg_match_mode parameter
|
|
1.11. Set detect_spirals parameter
|
|
1.12. Set db_url parameter
|
|
1.13. Set db_mode parameter
|
|
1.14. Set db_update_period parameter
|
|
1.15. Set db_fetch_rows parameter
|
|
1.16. Set db_skip_load parameter
|
|
1.17. Set table_name parameter
|
|
1.18. Set call_id_column parameter
|
|
1.19. Set from_uri_column parameter
|
|
1.20. Set from_tag_column parameter
|
|
1.21. Set to_uri_column parameter
|
|
1.22. Set to_tag_column parameter
|
|
1.23. Set from_cseq_column parameter
|
|
1.24. Set to_cseq_column parameter
|
|
1.25. Set from_route_column parameter
|
|
1.26. Set to_route_column parameter
|
|
1.27. Set from_contact_column parameter
|
|
1.28. Set to_contact_column parameter
|
|
1.29. Set from_sock_column parameter
|
|
1.30. Set to_sock_column parameter
|
|
1.31. Set h_id_column parameter
|
|
1.32. Set h_entry_column parameter
|
|
1.33. Set state_column parameter
|
|
1.34. Set start_time_column parameter
|
|
1.35. Set timeout_column parameter
|
|
1.36. Set sflags_column parameter
|
|
1.37. Set toroute_name_column parameter
|
|
1.38. Set vars_table_name parameter
|
|
1.39. Set vars_h_id_column parameter
|
|
1.40. Set vars_h_entry_column parameter
|
|
1.41. Set vars_key_column parameter
|
|
1.42. Set vars_value_column parameter
|
|
1.43. Set profiles_with_value parameter
|
|
1.44. Set profiles_no_value parameter
|
|
1.45. Set bridge_controller parameter
|
|
1.46. Set bridge_contact parameter
|
|
1.47. Set initial_cbs_inscript parameter
|
|
1.48. Set send_bye parameter
|
|
1.49. Set dlg_filter_mode parameter
|
|
1.50. Set wait_ack parameter
|
|
1.51. Set ka_timer parameter
|
|
1.52. Set ka_interval parameter
|
|
1.53. Set ka_failed_limit parameter
|
|
1.54. Set timeout_noreset parameter
|
|
1.55. Set timer_procs parameter
|
|
1.56. Set enable_dmq parameter
|
|
1.57. Set track_cseq_updates parameter
|
|
1.58. Set lreq_callee_headers parameter
|
|
1.59. Set event_callback parameter
|
|
1.60. Set h_id_start parameter
|
|
1.61. Set h_id_step parameter
|
|
1.62. Set dlg_keep_proxy_rr parameter
|
|
1.63. Set bye_early_code parameter
|
|
1.64. Set bye_early_reason parameter
|
|
1.65. Set dlg_ctxiuid_mode parameter
|
|
1.66. Set debug_variables parameter
|
|
1.67. Set dlg_mode parameter
|
|
1.68. set_dlg_profile usage
|
|
1.69. unset_dlg_profile usage
|
|
1.70. is_in_profile usage
|
|
1.71. get_profile_size usage
|
|
1.72. dlg_isflagset usage
|
|
1.73. dlg_setflag usage
|
|
1.74. dlg_resetflag usage
|
|
1.75. dlg_bye usage
|
|
1.76. dlg_refer usage
|
|
1.77. dlg_manage usage
|
|
1.78. dlg_bridge usage
|
|
1.79. dlg_get usage
|
|
1.80. dlg_get_var usage
|
|
1.81. dlg_set_var usage
|
|
1.82. is_known_dlg() usage
|
|
1.83. dlg_set_timeout usage
|
|
1.84. dlg_set_timeout_by_profile usage
|
|
1.85. dlg_set_property usage
|
|
1.86. dlg_remote_profile usage
|
|
1.87. dlg_set_ruri() usage
|
|
1.88. dlg_db_load_callid() usage
|
|
1.89. dlg_db_load_extra() usage
|
|
1.90. dlg_reset_property usage
|
|
1.91. dlg_req_within usage
|
|
1.92. dlg_set_state usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
Table of Contents
|
|
|
|
1. Overview
|
|
2. How it works
|
|
3. Dialog states
|
|
4. Dialog profiling
|
|
5. Dependencies
|
|
|
|
5.1. Kamailio Modules
|
|
5.2. External Libraries or Applications
|
|
|
|
6. Parameters
|
|
|
|
6.1. enable_stats (integer)
|
|
6.2. hash_size (integer)
|
|
6.3. rr_param (string)
|
|
6.4. dlg_flag (integer)
|
|
6.5. timeout_avp (string)
|
|
6.6. default_timeout (integer)
|
|
6.7. early_timeout (integer)
|
|
6.8. noack_timeout (integer)
|
|
6.9. end_timeout (integer)
|
|
6.10. dlg_extra_hdrs (string)
|
|
6.11. dlg_match_mode (integer)
|
|
6.12. detect_spirals (integer)
|
|
6.13. db_url (string)
|
|
6.14. db_mode (integer)
|
|
6.15. db_update_period (integer)
|
|
6.16. db_fetch_rows (integer)
|
|
6.17. db_skip_load (integer)
|
|
6.18. table_name (string)
|
|
6.19. call_id_column (string)
|
|
6.20. from_uri_column (string)
|
|
6.21. from_tag_column (string)
|
|
6.22. to_uri_column (string)
|
|
6.23. to_tag_column (string)
|
|
6.24. from_cseq_column (string)
|
|
6.25. to_cseq_column (string)
|
|
6.26. from_route_column (string)
|
|
6.27. to_route_column (string)
|
|
6.28. from_contact_column (string)
|
|
6.29. to_contact_column (string)
|
|
6.30. from_sock_column (string)
|
|
6.31. to_sock_column (string)
|
|
6.32. h_id_column (string)
|
|
6.33. h_entry_column (string)
|
|
6.34. state_column (string)
|
|
6.35. start_time_column (string)
|
|
6.36. timeout_column (string)
|
|
6.37. sflags_column (string)
|
|
6.38. toroute_name_column (string)
|
|
6.39. vars_table_name (string)
|
|
6.40. vars_h_id_column (string)
|
|
6.41. vars_h_entry_column (string)
|
|
6.42. vars_key_column (string)
|
|
6.43. vars_value_column (string)
|
|
6.44. profiles_with_value (string)
|
|
6.45. profiles_no_value (string)
|
|
6.46. bridge_controller (string)
|
|
6.47. bridge_contact (string)
|
|
6.48. initial_cbs_inscript (int)
|
|
6.49. send_bye (int)
|
|
6.50. dlg_filter_mode (int)
|
|
6.51. wait_ack (int)
|
|
6.52. ka_timer (int)
|
|
6.53. ka_interval (int)
|
|
6.54. ka_failed_limit (int)
|
|
6.55. timeout_noreset (int)
|
|
6.56. timer_procs (int)
|
|
6.57. enable_dmq (int)
|
|
6.58. track_cseq_updates (int)
|
|
6.59. lreq_callee_headers (string)
|
|
6.60. event_callback (str)
|
|
6.61. h_id_start (int)
|
|
6.62. h_id_step (int)
|
|
6.63. keep_proxy_rr (string)
|
|
6.64. bye_early_code (int)
|
|
6.65. bye_early_reason (string)
|
|
6.66. dlg_ctxiuid_mode (int)
|
|
6.67. debug_variables (int)
|
|
6.68. dlg_mode (int)
|
|
|
|
7. Functions
|
|
|
|
7.1. set_dlg_profile(profile[, value])
|
|
7.2. unset_dlg_profile(profile[, value])
|
|
7.3. is_in_profile(profile[, value])
|
|
7.4. get_profile_size(profile[, value], size)
|
|
7.5. dlg_isflagset(flag)
|
|
7.6. dlg_setflag(flag)
|
|
7.7. dlg_resetflag(flag)
|
|
7.8. dlg_bye(side)
|
|
7.9. dlg_refer(side, address)
|
|
7.10. dlg_manage()
|
|
7.11. dlg_bridge(from, to, op)
|
|
7.12. dlg_get(callid, ftag, ttag)
|
|
7.13. dlg_get_var(callid, ftag, ttag, name, dst)
|
|
7.14. dlg_set_var(callid, ftag, ttag, name, value)
|
|
7.15. is_known_dlg()
|
|
7.16. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.17. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.18. dlg_set_property(attr)
|
|
7.19. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
7.20. dlg_set_ruri()
|
|
7.21. dlg_db_load_callid(cival)
|
|
7.22. dlg_db_load_extra()
|
|
7.23. dlg_reset_property(attr)
|
|
7.24. dlg_req_within(side, method, [headers], [content_type,
|
|
content])
|
|
|
|
7.25. dlg_set_state(newstate)
|
|
|
|
8. Statistics
|
|
|
|
8.1. active_dialogs
|
|
8.2. early_dialogs
|
|
8.3. processed_dialogs
|
|
8.4. expired_dialogs
|
|
8.5. failed_dialogs
|
|
|
|
9. RPC Commands
|
|
|
|
9.1. dlg.list
|
|
9.2. dlg.list_ctx
|
|
9.3. dlg.list_match
|
|
9.4. dlg.list_match_ctx
|
|
9.5. dlg.dump_file
|
|
9.6. dlg.dlg_list
|
|
9.7. dlg.dlg_list_ctx
|
|
9.8. dlg.terminate_dlg
|
|
9.9. dlg.end_dlg
|
|
9.10. dlg.set_state
|
|
9.11. dlg.profile_get_size
|
|
9.12. dlg.profile_list
|
|
9.13. dlg.bridge_dlg
|
|
9.14. dlg.stats_active
|
|
9.15. dlg.is_alive
|
|
9.16. dlg.briefing
|
|
|
|
10. Exported Variables
|
|
|
|
10.1. $DLG_count
|
|
10.2. $DLG_status
|
|
10.3. $DLG_lifetime
|
|
10.4. $dlg(...)
|
|
10.5. $dlg_ctx(...)
|
|
10.6. $dlg_var(key)
|
|
|
|
11. Event Routes
|
|
|
|
11.1. event_route[dialog:start]
|
|
11.2. event_route[dialog:end]
|
|
11.3. event_route[dialog:failed]
|
|
|
|
1. Overview
|
|
|
|
Kamailio can behave as a stateful proxy through the TM module. However,
|
|
"stateful" in this context refers to transaction state, not dialog
|
|
state. Certain applications may benefit from an awareness of "calls" in
|
|
the proxy, not just SIP transactions.
|
|
|
|
For example, a common need is to limit the number of calls that can be
|
|
made concurrently by an endpoint, account, user group, etc. In order to
|
|
count the number of calls in progress, it is necessary for the proxy to
|
|
be aware of whole dialogs, not just transactions, and to provide some
|
|
means of programmatically classifying these dialogs. This is just one
|
|
common application discussed for illustrative purposes; there are many
|
|
others.
|
|
|
|
The dialog module provides dialog awareness for the Kamailio proxy. Its
|
|
functionality is to keep track of the current dialogs, to offer
|
|
information about them (e.g. how many dialogs are active), and to
|
|
manage various characteristics of dialogs. The module exports several
|
|
functions that can be used directly from the configuration route script
|
|
as well as functions for the RPC interface.
|
|
|
|
This module also provides an API foundation on which to build more
|
|
complex dialog-oriented functionality in other Kamailio modules.
|
|
|
|
2. How it works
|
|
|
|
To create the dialog associated with an initial INVITE request, execute
|
|
the function “dlg_manage()” before creating the corresponding
|
|
transaction.
|
|
|
|
The dialog is automatically destroyed when a “BYE” is received. In case
|
|
of no “BYE”, the dialog lifetime is controlled via the default timeout
|
|
(see “default_timeout” - Section 6.6, “default_timeout (integer)”) and
|
|
custom timeout (see “timeout_avp” - Section 6.5, “timeout_avp
|
|
(string)”). The dialog timeout is reset each time a sequential request
|
|
is processed.
|
|
|
|
3. Dialog states
|
|
|
|
Dialogs have states that are shown in the RPC interface as well as
|
|
stored in the database.
|
|
* 1 : Unconfirmed dialog
|
|
* 2 : Early dialog (ringing)
|
|
* 3 : Confirmed dialog (waiting for ACK)
|
|
* 4 : Confirmed dialog (active call)
|
|
* 5 : Deleted dialog
|
|
|
|
The early and deleted dialog states are not updated in database
|
|
storage.
|
|
|
|
4. Dialog profiling
|
|
|
|
Dialog profiling is a mechanism that helps in classifying, sorting and
|
|
keeping track of certain types of dialogs. The classification criteria
|
|
can be any attributes desired by the administrator; it can be SIP
|
|
message attributes, other pseudo-variables, custom values, etc. Dialogs
|
|
can be dynamically added into one or more profile tables. Logically,
|
|
each profile table can have a special meaning (like dialogs outside the
|
|
domain, dialogs terminated to the PSTN, etc.).
|
|
|
|
There are two types of profiles:
|
|
* with no value - a dialog simply belongs to a profile (for instance,
|
|
an outbound calls profile). There is no other additional
|
|
information to describe the dialog beyond its membership in the
|
|
profile per se.
|
|
* with value - a dialog belongs to a profile having a certain value
|
|
(like in a caller profile, where the value is the caller ID). The
|
|
membership of the dialog in the profile is strictly related to the
|
|
value. For example, if the account ID of the caller is stored in
|
|
the pseudo-variable $var(account_id), you can use $var(account_id)
|
|
as a value/key by which to group dialogs so that you can count the
|
|
number of open dialogs for each account, enforce concurrent call
|
|
limits as necessary, etc.
|
|
|
|
A dialog can be added to multiple profiles at the same time.
|
|
|
|
Profiles are visible (at the moment) in the request route (for initial
|
|
and sequential requests) and in the branch, failure and reply routes of
|
|
the original request.
|
|
|
|
5. Dependencies
|
|
|
|
5.1. Kamailio Modules
|
|
5.2. External Libraries or Applications
|
|
|
|
5.1. Kamailio Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* TM - Transaction module
|
|
* RR - Record-Route module
|
|
* PV - Pseudovariables module
|
|
|
|
5.2. External Libraries or Applications
|
|
|
|
The following libraries or applications must be installed before
|
|
running Kamailio with this module loaded:
|
|
* None.
|
|
|
|
6. Parameters
|
|
|
|
6.1. enable_stats (integer)
|
|
6.2. hash_size (integer)
|
|
6.3. rr_param (string)
|
|
6.4. dlg_flag (integer)
|
|
6.5. timeout_avp (string)
|
|
6.6. default_timeout (integer)
|
|
6.7. early_timeout (integer)
|
|
6.8. noack_timeout (integer)
|
|
6.9. end_timeout (integer)
|
|
6.10. dlg_extra_hdrs (string)
|
|
6.11. dlg_match_mode (integer)
|
|
6.12. detect_spirals (integer)
|
|
6.13. db_url (string)
|
|
6.14. db_mode (integer)
|
|
6.15. db_update_period (integer)
|
|
6.16. db_fetch_rows (integer)
|
|
6.17. db_skip_load (integer)
|
|
6.18. table_name (string)
|
|
6.19. call_id_column (string)
|
|
6.20. from_uri_column (string)
|
|
6.21. from_tag_column (string)
|
|
6.22. to_uri_column (string)
|
|
6.23. to_tag_column (string)
|
|
6.24. from_cseq_column (string)
|
|
6.25. to_cseq_column (string)
|
|
6.26. from_route_column (string)
|
|
6.27. to_route_column (string)
|
|
6.28. from_contact_column (string)
|
|
6.29. to_contact_column (string)
|
|
6.30. from_sock_column (string)
|
|
6.31. to_sock_column (string)
|
|
6.32. h_id_column (string)
|
|
6.33. h_entry_column (string)
|
|
6.34. state_column (string)
|
|
6.35. start_time_column (string)
|
|
6.36. timeout_column (string)
|
|
6.37. sflags_column (string)
|
|
6.38. toroute_name_column (string)
|
|
6.39. vars_table_name (string)
|
|
6.40. vars_h_id_column (string)
|
|
6.41. vars_h_entry_column (string)
|
|
6.42. vars_key_column (string)
|
|
6.43. vars_value_column (string)
|
|
6.44. profiles_with_value (string)
|
|
6.45. profiles_no_value (string)
|
|
6.46. bridge_controller (string)
|
|
6.47. bridge_contact (string)
|
|
6.48. initial_cbs_inscript (int)
|
|
6.49. send_bye (int)
|
|
6.50. dlg_filter_mode (int)
|
|
6.51. wait_ack (int)
|
|
6.52. ka_timer (int)
|
|
6.53. ka_interval (int)
|
|
6.54. ka_failed_limit (int)
|
|
6.55. timeout_noreset (int)
|
|
6.56. timer_procs (int)
|
|
6.57. enable_dmq (int)
|
|
6.58. track_cseq_updates (int)
|
|
6.59. lreq_callee_headers (string)
|
|
6.60. event_callback (str)
|
|
6.61. h_id_start (int)
|
|
6.62. h_id_step (int)
|
|
6.63. keep_proxy_rr (string)
|
|
6.64. bye_early_code (int)
|
|
6.65. bye_early_reason (string)
|
|
6.66. dlg_ctxiuid_mode (int)
|
|
6.67. debug_variables (int)
|
|
6.68. dlg_mode (int)
|
|
|
|
6.1. enable_stats (integer)
|
|
|
|
If statistics support should be enabled or not. Via statistics
|
|
variables, the module provides information about the dialog processing.
|
|
Set it to zero to disable or to non-zero to enable it.
|
|
|
|
Default value is “1 (enabled)”.
|
|
|
|
Example 1.1. Set enable_stats parameter
|
|
...
|
|
modparam("dialog", "enable_stats", 0)
|
|
...
|
|
|
|
6.2. hash_size (integer)
|
|
|
|
The size of the hash table internally used to keep the dialogs. A
|
|
larger table is much faster but consumes more memory. The hash size
|
|
must be a power of two.
|
|
|
|
IMPORTANT: If dialog information should be stored in a database, a
|
|
constant hash_size should be used, otherwise the restoring process will
|
|
not take place. If you really want to modify the hash_size, you must
|
|
delete all table's rows before restarting the server.
|
|
|
|
Default value is “4096”.
|
|
|
|
Example 1.2. Set hash_size parameter
|
|
...
|
|
modparam("dialog", "hash_size", 1024)
|
|
...
|
|
|
|
6.3. rr_param (string)
|
|
|
|
Name of the Record-Route parameter used to store the dialog cookie. It
|
|
is used for the fast matching of sequential requests to tracked
|
|
dialogs.
|
|
|
|
Default value is “did”.
|
|
|
|
Example 1.3. Set rr_param parameter
|
|
...
|
|
modparam("dialog", "rr_param", "xyz")
|
|
...
|
|
|
|
6.4. dlg_flag (integer)
|
|
|
|
Note: This flag has beed deprecated and not used anymore. It is not
|
|
needed to set this parameter and its corresponding flag for initial
|
|
request in case the “dlg_manage()” function is used. In other words,
|
|
use “dlg_manage()”.
|
|
|
|
Default value is “none”.
|
|
|
|
6.5. timeout_avp (string)
|
|
|
|
The specification of an AVP that contains a custom timeout value (in
|
|
seconds) for the dialog. It may be used only in a request (initial or
|
|
sequential) context.
|
|
|
|
Default value is “none”.
|
|
|
|
Example 1.4. Set timeout_avp parameter
|
|
...
|
|
modparam("dialog", "timeout_avp", "$avp(i:10)")
|
|
...
|
|
|
|
6.6. default_timeout (integer)
|
|
|
|
The default dialog timeout (in seconds), in the absence of a custom
|
|
value provided in an AVP.
|
|
|
|
Default value is “43200 (12 hours)”.
|
|
|
|
Example 1.5. Set default_timeout parameter
|
|
...
|
|
modparam("dialog", "default_timeout", 21600)
|
|
...
|
|
|
|
6.7. early_timeout (integer)
|
|
|
|
The timeout (in seconds) after which the dialogs in unconfirmed or
|
|
early state (no final response received) are destroyed.
|
|
|
|
Default value is “300 (5 minutes)”.
|
|
|
|
Example 1.6. Set early_timeout parameter
|
|
...
|
|
modparam("dialog", "early_timeout", 180)
|
|
...
|
|
|
|
6.8. noack_timeout (integer)
|
|
|
|
The timeout (in seconds) after which the dialogs which were answered
|
|
with 200 OK but didn't receive the ACK are marked for termination (the
|
|
lifetime is set to 10 more seconds).
|
|
|
|
Default value is “60 (1 minute)”.
|
|
|
|
Example 1.7. Set noack_timeout parameter
|
|
...
|
|
modparam("dialog", "noack_timeout", 90)
|
|
...
|
|
|
|
6.9. end_timeout (integer)
|
|
|
|
The timeout (in seconds) after which the dialogs in terminated state
|
|
are destroyed.
|
|
|
|
Default value is “300 (5 minutes)”.
|
|
|
|
Example 1.8. Set end_timeout parameter
|
|
...
|
|
modparam("dialog", "end_timeout", 180)
|
|
...
|
|
|
|
6.10. dlg_extra_hdrs (string)
|
|
|
|
A string containing the extra headers (full format, with EOH) to be
|
|
added to requests generated locally by the module (like BYEs).
|
|
|
|
Default value is “NULL”.
|
|
|
|
Example 1.9. Set dlf_extra_hdrs parameter
|
|
...
|
|
modparam("dialog", "dlg_extra_hdrs", "Hint: credit expired\r\n")
|
|
...
|
|
|
|
6.11. dlg_match_mode (integer)
|
|
|
|
How the sequential requests should be matched against the known
|
|
dialogs. The modes are a combination of matching based on a cookie
|
|
(DID) stored as cookie in Record-Route header and matching based on SIP
|
|
elements (as in RFC 3261).
|
|
|
|
Note: DID-based matching does not replace callid/fromtag/totag
|
|
comparison. It will speed up dialog matching by not iterating over the
|
|
whole dialog list for callid/fromtag/totag comparison, but instead it
|
|
uses a hash table to find the respective dialog and then doing only one
|
|
callid/fromtag/totag comparison. Thus, there is no security issue when
|
|
using DID based matching. Use DID_FALLBACK for maximum interoperability
|
|
or use DID_ONLY to reject buggy clients or hacking attempts. DID_NONE
|
|
is only useful, when you want to hide dialog-tracking from the users
|
|
(preventing the DID Record-Route cookie).
|
|
|
|
The supported modes are:
|
|
* 0 - DID_ONLY - the match is done exclusively based on DID;
|
|
* 1 - DID_FALLBACK - the match is first tried based on DID and if not
|
|
present, it will fall back to SIP matching;
|
|
* 2 - DID_NONE - the match is done exclusively based on SIP elements;
|
|
no DID information is added in RR.
|
|
|
|
Default value is “0 (DID_ONLY)”.
|
|
|
|
Example 1.10. Set dlg_match_mode parameter
|
|
...
|
|
modparam("dialog", "dlg_match_mode", 1)
|
|
...
|
|
|
|
6.12. detect_spirals (integer)
|
|
|
|
Whether spirals (i.e., messages routed through the proxy multiple
|
|
times) should be detected.
|
|
|
|
If set to 0, spirals will not be detected and result in the generation
|
|
of a new, possibly dangling dialog structure per occurring spiral. If
|
|
set to 1, spirals are detected and internally mapped to existing dialog
|
|
structures.
|
|
|
|
Default value is 1.
|
|
|
|
Example 1.11. Set detect_spirals parameter
|
|
...
|
|
modparam("dialog", "detect_spirals", 1)
|
|
...
|
|
|
|
6.13. db_url (string)
|
|
|
|
In order to store information about dialogs in a database, a database
|
|
URL must be specified.
|
|
|
|
Default value is “mysql://kamailio:kamailiorw@localhost/kamailio”.
|
|
|
|
Example 1.12. Set db_url parameter
|
|
...
|
|
modparam("dialog", "db_url", "dbdriver://username:password@dbhost/dbname")
|
|
...
|
|
|
|
6.14. db_mode (integer)
|
|
|
|
Mode of synchronisation of dialog information from memory to an
|
|
underlying database (if desired):
|
|
|
|
The supported modes are:
|
|
* 0 - NO_DB - the memory content is not flushed into DB;
|
|
* 1 - REALTIME - any dialog information changes will be reflected
|
|
into the database immediately.
|
|
* 2 - DELAYED - the dialog information changes will be flushed into
|
|
DB periodically, based on a timer routine.
|
|
* 3 - SHUTDOWN - the dialog information will be flushed into DB only
|
|
at shutdown - no runtime updates.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.13. Set db_mode parameter
|
|
...
|
|
modparam("dialog", "db_mode", 1)
|
|
...
|
|
|
|
6.15. db_update_period (integer)
|
|
|
|
The interval (seconds) at which to update dialogs' information, if the
|
|
server is configured to store the dialog information at a given
|
|
interval. A too short interval will generate intensive database
|
|
operations, while an excessively long one will miss dialogs with a
|
|
short lifetime.
|
|
|
|
Default value is “60” seconds.
|
|
|
|
Example 1.14. Set db_update_period parameter
|
|
...
|
|
modparam("dialog", "db_update_period", 120)
|
|
...
|
|
|
|
6.16. db_fetch_rows (integer)
|
|
|
|
The number of the rows to be fetched at once from database when loading
|
|
the dialog records at startup from the database. This value can be used
|
|
to tune the load time at startup. For 1MB of private memory (default),
|
|
it should be below 400. The database driver must support the
|
|
fetch_result() capability. A value of 0 means the database fetch is not
|
|
limited.
|
|
|
|
Default value is “200”.
|
|
|
|
Example 1.15. Set db_fetch_rows parameter
|
|
...
|
|
modparam("dialog", "db_fetch_rows", 500)
|
|
...
|
|
|
|
6.17. db_skip_load (integer)
|
|
|
|
Set db_skip_load to 1, to skip the loading of dialog data from the
|
|
database.
|
|
|
|
Default value is “0” ( not skipped ).
|
|
|
|
Example 1.16. Set db_skip_load parameter
|
|
...
|
|
modparam("dialog", "db_skip_load", 1)
|
|
...
|
|
|
|
6.18. table_name (string)
|
|
|
|
Database table name used for storing dialog information.
|
|
|
|
Default value is “dialog”.
|
|
|
|
Example 1.17. Set table_name parameter
|
|
...
|
|
modparam("dialog", "table_name", "my_dialog")
|
|
...
|
|
|
|
6.19. call_id_column (string)
|
|
|
|
The column name in the database to store the dialog call-id.
|
|
|
|
Default value is “callid”.
|
|
|
|
Example 1.18. Set call_id_column parameter
|
|
...
|
|
modparam("dialog", "call_id_column", "callid_c_name")
|
|
...
|
|
|
|
6.20. from_uri_column (string)
|
|
|
|
The column name in the database to store the caller's SIP address
|
|
(URI).
|
|
|
|
Default value is “from_uri”.
|
|
|
|
Example 1.19. Set from_uri_column parameter
|
|
...
|
|
modparam("dialog", "from_uri_column", "from_uri_c_name")
|
|
...
|
|
|
|
6.21. from_tag_column (string)
|
|
|
|
The column name in the database to store the From header tag from the
|
|
INVITE request.
|
|
|
|
Default value is “from_tag”.
|
|
|
|
Example 1.20. Set from_tag_column parameter
|
|
...
|
|
modparam("dialog", "from_tag_column", "from_tag_c_name")
|
|
...
|
|
|
|
6.22. to_uri_column (string)
|
|
|
|
The column name in the database to store the callee's SIP address
|
|
(URI).
|
|
|
|
Default value is “to_uri”.
|
|
|
|
Example 1.21. Set to_uri_column parameter
|
|
...
|
|
modparam("dialog", "to_uri_column", "to_uri_c_name")
|
|
...
|
|
|
|
6.23. to_tag_column (string)
|
|
|
|
The column name in the database to store the To header tag from the 200
|
|
OK response to the INVITE request, if present.
|
|
|
|
Default value is “to_tag”.
|
|
|
|
Example 1.22. Set to_tag_column parameter
|
|
...
|
|
modparam("dialog", "to_tag_column", "to_tag_c_name")
|
|
...
|
|
|
|
6.24. from_cseq_column (string)
|
|
|
|
The column name in the database to store the Cseq from caller side.
|
|
|
|
Default value is “caller_cseq”.
|
|
|
|
Example 1.23. Set from_cseq_column parameter
|
|
...
|
|
modparam("dialog", "from_cseq_column", "from_cseq")
|
|
...
|
|
|
|
6.25. to_cseq_column (string)
|
|
|
|
The column name in the database to store the cseq from callee side.
|
|
|
|
Default value is “callee_cseq”.
|
|
|
|
Example 1.24. Set to_cseq_column parameter
|
|
...
|
|
modparam("dialog", "to_cseq_column", "to_cseq")
|
|
...
|
|
|
|
6.26. from_route_column (string)
|
|
|
|
The column name in the database to store the route records from caller
|
|
side (proxy to caller).
|
|
|
|
Default value is “caller_route_set”.
|
|
|
|
Example 1.25. Set from_route_column parameter
|
|
...
|
|
modparam("dialog", "from_route_column", "rroute_from")
|
|
...
|
|
|
|
6.27. to_route_column (string)
|
|
|
|
The column name in the database to store the route records from callee
|
|
side (proxy to callee).
|
|
|
|
Default value is “callee_route_set”.
|
|
|
|
Example 1.26. Set to_route_column parameter
|
|
...
|
|
modparam("dialog", "to_route_column", "rroute_to")
|
|
...
|
|
|
|
6.28. from_contact_column (string)
|
|
|
|
The column name in the database to store the caller's contact uri.
|
|
|
|
Default value is “caller_contact”.
|
|
|
|
Example 1.27. Set from_contact_column parameter
|
|
...
|
|
modparam("dialog", "from_contact_column", "from_contact_uri")
|
|
...
|
|
|
|
6.29. to_contact_column (string)
|
|
|
|
The column name in the database to store the callee's contact uri.
|
|
|
|
Default value is “callee_contact”.
|
|
|
|
Example 1.28. Set to_contact_column parameter
|
|
...
|
|
modparam("dialog", "to_contact_column", "to_contact_uri")
|
|
...
|
|
|
|
6.30. from_sock_column (string)
|
|
|
|
The column name in the database to store the information about the
|
|
local interface receiving the traffic from caller.
|
|
|
|
Default value is “caller_sock”.
|
|
|
|
Example 1.29. Set from_sock_column parameter
|
|
...
|
|
modparam("dialog", "from_sock_column", "socket_from")
|
|
...
|
|
|
|
6.31. to_sock_column (string)
|
|
|
|
The column name in the database to store information about the local
|
|
interface receiving the traffic from callee.
|
|
|
|
Default value is “callee_sock”.
|
|
|
|
Example 1.30. Set to_sock_column parameter
|
|
...
|
|
modparam("dialog", "to_sock_column", "socket_to")
|
|
...
|
|
|
|
6.32. h_id_column (string)
|
|
|
|
The column name in the database to store the dialogs' hash id
|
|
information.
|
|
|
|
Default value is “hash_id”.
|
|
|
|
Example 1.31. Set h_id_column parameter
|
|
...
|
|
modparam("dialog", "h_id_column", "hash_id_c_name")
|
|
...
|
|
|
|
6.33. h_entry_column (string)
|
|
|
|
The column name in the database to store the dialog's hash entry
|
|
information.
|
|
|
|
Default value is “hash_entry”.
|
|
|
|
Example 1.32. Set h_entry_column parameter
|
|
...
|
|
modparam("dialog", "h_entry_column", "h_entry_c_name")
|
|
...
|
|
|
|
6.34. state_column (string)
|
|
|
|
The column name in the database to store the dialog's state
|
|
information.
|
|
|
|
Default value is “state”.
|
|
|
|
Example 1.33. Set state_column parameter
|
|
...
|
|
modparam("dialog", "state_column", "state_c_name")
|
|
...
|
|
|
|
6.35. start_time_column (string)
|
|
|
|
The column name in the database to store the dialog's start time
|
|
information.
|
|
|
|
Default value is “start_time”.
|
|
|
|
Example 1.34. Set start_time_column parameter
|
|
...
|
|
modparam("dialog", "start_time_column", "start_time_c_name")
|
|
...
|
|
|
|
6.36. timeout_column (string)
|
|
|
|
The column name in the database to store the dialog's timeout.
|
|
|
|
Default value is “timeout”.
|
|
|
|
Example 1.35. Set timeout_column parameter
|
|
...
|
|
modparam("dialog", "timeout_column", "timeout_c_name")
|
|
...
|
|
|
|
6.37. sflags_column (string)
|
|
|
|
The column name in the database to store the dialog script flags.
|
|
|
|
Default value is “sflags”.
|
|
|
|
Example 1.36. Set sflags_column parameter
|
|
...
|
|
modparam("dialog", "sflags_column", "s_flags")
|
|
...
|
|
|
|
6.38. toroute_name_column (string)
|
|
|
|
The column name in the database to store the index of the route to be
|
|
executed at timeout.
|
|
|
|
Default value is “toroute_name”.
|
|
|
|
Example 1.37. Set toroute_name_column parameter
|
|
...
|
|
modparam("dialog", "toroute_name_column", "timeout_route")
|
|
...
|
|
|
|
6.39. vars_table_name (string)
|
|
|
|
If you want to store the dialog variables (“$dlg_var(name)”) for a
|
|
dialog in a database a table name must be specified.
|
|
|
|
Default value is “dialog_vars”.
|
|
|
|
Example 1.38. Set vars_table_name parameter
|
|
...
|
|
modparam("dialog", "vars_table_name", "my_dialog_vars")
|
|
...
|
|
|
|
6.40. vars_h_id_column (string)
|
|
|
|
The column name in the database to store the dialog's hash id
|
|
information (as a reference to the dialog table).
|
|
|
|
Default value is “hash_id”.
|
|
|
|
Example 1.39. Set vars_h_id_column parameter
|
|
...
|
|
modparam("dialog", "vars_h_id_column", "vars_h_id_name")
|
|
...
|
|
|
|
6.41. vars_h_entry_column (string)
|
|
|
|
The column name in the database to store the dialog's hash entry
|
|
information (as a reference to the dialog table).
|
|
|
|
Default value is “hash_entry”.
|
|
|
|
Example 1.40. Set vars_h_entry_column parameter
|
|
...
|
|
modparam("dialog", "vars_h_entry_column", "vars_h_entry_name")
|
|
...
|
|
|
|
6.42. vars_key_column (string)
|
|
|
|
The column name in the database to store the names (keys) of a dialog
|
|
variable.
|
|
|
|
Default value is “dialog_key”.
|
|
|
|
Example 1.41. Set vars_key_column parameter
|
|
...
|
|
modparam("dialog", "vars_key_column", "vars_key_name")
|
|
...
|
|
|
|
6.43. vars_value_column (string)
|
|
|
|
The column name in the database to store the values of a dialog
|
|
variable.
|
|
|
|
Default value is “dialog_value”.
|
|
|
|
Example 1.42. Set vars_value_column parameter
|
|
...
|
|
modparam("dialog", "vars_value_column", "vars_value_name")
|
|
...
|
|
|
|
6.44. profiles_with_value (string)
|
|
|
|
List of names for profiles with values, separated with semi-colon ";".
|
|
|
|
Default value is “empty”.
|
|
|
|
Example 1.43. Set profiles_with_value parameter
|
|
...
|
|
modparam("dialog", "profiles_with_value", "caller ; my_profile")
|
|
...
|
|
|
|
6.45. profiles_no_value (string)
|
|
|
|
List of names for profiles without values, separated with semi-colon
|
|
";".
|
|
|
|
Default value is “empty”.
|
|
|
|
Example 1.44. Set profiles_no_value parameter
|
|
...
|
|
modparam("dialog", "profiles_no_value", "inbound ; outbound")
|
|
...
|
|
|
|
6.46. bridge_controller (string)
|
|
|
|
SIP address to be used in From header when initiating a call bridge.
|
|
|
|
Default value is “sip:controller@kamailio.org”.
|
|
|
|
Example 1.45. Set bridge_controller parameter
|
|
...
|
|
modparam("dialog", "bridge_controller", "sip:ctd@kamailio.org")
|
|
...
|
|
|
|
6.47. bridge_contact (string)
|
|
|
|
SIP address to be used in Contact header when doing a call bridge.
|
|
|
|
Default value is “sip:controller@kamailio.org:5060”.
|
|
|
|
Example 1.46. Set bridge_contact parameter
|
|
...
|
|
modparam("dialog", "bridge_contact", "sip:ctd@127.0.0.1:5060")
|
|
...
|
|
|
|
6.48. initial_cbs_inscript (int)
|
|
|
|
If the initial dialog callbacks (i.e., DLGCB_CREATED and
|
|
DLGCB_SPIRALED) should be executed in-script or post-script. If
|
|
dlg_manage() is not used, the setting of this parameter does not
|
|
matter; otherwise, initial callbacks will be executed directly after
|
|
dlg_manage() is called if this parameter is enabled. If it is disabled,
|
|
initial callback execution will be postponed until configuration script
|
|
execution completes.
|
|
|
|
The supported values are:
|
|
* 0 - POST-SCRIPT - execute initial callbacks after the script
|
|
completes;
|
|
* 1 - IN-SCRIPT - execute initial callbacks during script execution,
|
|
i.e., right after dlg_manage() is called;
|
|
|
|
Default value is “1”.
|
|
|
|
Example 1.47. Set initial_cbs_inscript parameter
|
|
...
|
|
modparam("dialog", "initial_cbs_inscript", 0)
|
|
...
|
|
|
|
6.49. send_bye (int)
|
|
|
|
If set to 1, BYE requests will be sent out for each dialog that timed
|
|
out. It is an alternative to $dlg_ctx(timeout_bye)=1 for all dialogs.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.48. Set send_bye parameter
|
|
...
|
|
modparam("dialog", "send_bye", 1)
|
|
...
|
|
|
|
6.50. dlg_filter_mode (int)
|
|
|
|
Set dialog fitering mode, which can specify what dialogs are processed.
|
|
Its value can be a combination (the sum) of following flags:
|
|
* 1 - do not send keepalives and do not execute timeout function if
|
|
dialog is not local (if the associated bind address is not a local
|
|
socket).
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.49. Set dlg_filter_mode parameter
|
|
...
|
|
modparam("dialog", "dlg_filter_mode", 1)
|
|
...
|
|
|
|
6.51. wait_ack (int)
|
|
|
|
If set to 1, dialog will be kept a bit longer in memory in order to
|
|
absorb the ACK negative replies of initial INVITE. If not, the dialog
|
|
is destroyed when negative reply is sent out (less internal
|
|
complexity).
|
|
|
|
Default value is “1”.
|
|
|
|
Example 1.50. Set wait_ack parameter
|
|
...
|
|
modparam("dialog", "wait_ack", 0)
|
|
...
|
|
|
|
6.52. ka_timer (int)
|
|
|
|
Keep-alive timer step - how often to execute the callback to send
|
|
dialog keep alives (SIP OPTIONS requests within dialog). The value
|
|
represents the number of seconds.
|
|
|
|
Default value is “0” (no keep alive).
|
|
|
|
Example 1.51. Set ka_timer parameter
|
|
...
|
|
modparam("dialog", "ka_timer", 10)
|
|
...
|
|
|
|
6.53. ka_interval (int)
|
|
|
|
The interval between keep alives within dialog (SIP OPTIONS requests),
|
|
sent to caller or callee. The keep alive request will be sent by the
|
|
first callback fired by KA timer after the ka_interval elapsed from
|
|
dialog setup or previous keep-alive. The value represents the number of
|
|
seconds.
|
|
|
|
If the requests times out (generating a 408) or if the UA responds with
|
|
481 the lifetime is set to 10 seconds. When lifetime expires the dialog
|
|
will be terminated. Any other response (including error responses) will
|
|
reset the timers.
|
|
|
|
Default value is “0” (no keep alive). The lowest settable interval is
|
|
30 seconds.
|
|
|
|
Example 1.52. Set ka_interval parameter
|
|
...
|
|
modparam("dialog", "ka_interval", 300)
|
|
...
|
|
|
|
6.54. ka_failed_limit (int)
|
|
|
|
The number of failed keep-alive requests that is accepted before
|
|
generating a dialog timeout.
|
|
|
|
Default value is “1”.
|
|
|
|
Example 1.53. Set ka_failed_limit parameter
|
|
...
|
|
modparam("dialog", "ka_failed_limit", 5)
|
|
...
|
|
|
|
6.55. timeout_noreset (int)
|
|
|
|
If set to 1, the dialog timeout won't be reset each time a sequential
|
|
request is processed. It is an alternative to
|
|
dlg_set_property("timeout-noreset") for all dialogs.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.54. Set timeout_noreset parameter
|
|
...
|
|
modparam("dialog", "timeout_noreset", 1)
|
|
...
|
|
|
|
6.56. timer_procs (int)
|
|
|
|
If set to 1, the dialog module will start a separate dialog timer
|
|
process to execute dialog timeout tasks. The default is to use the core
|
|
timer process.
|
|
|
|
Default value is “0” (use core timer process).
|
|
|
|
Example 1.55. Set timer_procs parameter
|
|
...
|
|
modparam("dialog", "timer_procs", 1)
|
|
...
|
|
|
|
6.57. enable_dmq (int)
|
|
|
|
If set to 1, the dialog will be synced via dmq. For now, only very
|
|
basic dialog info is shared, just enough to have synced profiles.
|
|
Notably, it is not possible to send in-dialog requests on any but the
|
|
original proxy instance.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.56. Set enable_dmq parameter
|
|
...
|
|
modparam("dialog", "enable_dmq", 1)
|
|
...
|
|
|
|
6.58. track_cseq_updates (int)
|
|
|
|
Enable the callbacks for tracking if CSeq number needs to be updated.
|
|
It is the case when the INVITE has to be authenticated to downstream
|
|
provider using uac_auth() from uac module.
|
|
|
|
This is done only for requests in downstream direction. The CSeq
|
|
difference is stored in $dlg_var(cseq_diff), be sure this variable is
|
|
not overwritten via config operation.
|
|
|
|
Default value is “0” (disabled).
|
|
|
|
Example 1.57. Set track_cseq_updates parameter
|
|
...
|
|
modparam("dialog", "track_cseq_updates", 1)
|
|
...
|
|
|
|
6.59. lreq_callee_headers (string)
|
|
|
|
SIP headers to be added when sending local generated requests (e.g.,
|
|
BYE) to callee. It can be useful when you use topoh module with call-id
|
|
masking (see the docs of topoh module).
|
|
|
|
Default value is “null”.
|
|
|
|
Example 1.58. Set lreq_callee_headers parameter
|
|
...
|
|
modparam("dialog", "lreq_callee_headers", "TH: dlh\r\n")
|
|
...
|
|
|
|
6.60. event_callback (str)
|
|
|
|
The name of the function in the kemi configuration file (embedded
|
|
scripting language such as Lua, Python, ...) to be executed instead of
|
|
event_route[...] blocks.
|
|
|
|
The function receives a string parameter with the name of the event,
|
|
the values are: 'dialog:start', 'dialog:end', 'dialog:failed'. It is
|
|
also executed if '$dlg_ctx(timeout_route)' is set, the callback
|
|
function being executed with the variable value as parameter.
|
|
|
|
Default value is 'empty' (no function is executed for events).
|
|
|
|
Example 1.59. Set event_callback parameter
|
|
...
|
|
modparam("dialog", "event_callback", "ksr_dialog_event")
|
|
...
|
|
-- event callback function implemented in Lua
|
|
function ksr_dialog_event(evname)
|
|
KSR.info("===== dialog module triggered event: " .. evname .. "\n");
|
|
return 1;
|
|
end
|
|
...
|
|
|
|
6.61. h_id_start (int)
|
|
|
|
Set the offset to be used for generating dialog internal hash id. If
|
|
set to -1, the h_id_start is set to the value of the server_id global
|
|
parameter.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.60. Set h_id_start parameter
|
|
...
|
|
modparam("dialog", "h_id_start", 5)
|
|
...
|
|
|
|
6.62. h_id_step (int)
|
|
|
|
Set the step to increment the dialog internal hash id.
|
|
|
|
If the value is greater than 1, the internal hash id is generated with
|
|
the rule: h_id_start + N * h_id_step. The first value of N is randomly
|
|
selected at startup, then incremented by 1 for each new dialog. Setting
|
|
h_id_start and h_id_step to non-default values should be done when
|
|
using dlg_db_load_callid(...) or dlg_db_load_extra() to load dialog
|
|
records generated by another Kamailio instance. Pay attention to ensure
|
|
that those Kamailio instances are not going to generate overlapping
|
|
dialog hash id values by using different h_id_start and the same
|
|
h_id_step (h_id_step has to be greater than the maximum value of
|
|
h_id_start).
|
|
|
|
Default value is “1”.
|
|
|
|
Example 1.61. Set h_id_step parameter
|
|
...
|
|
modparam("dialog", "h_id_step", 10)
|
|
...
|
|
|
|
6.63. keep_proxy_rr (string)
|
|
|
|
Whether to keep the record-route header added by the proxy. When
|
|
enabled, it will keep this proxy's record-route header from the reply.
|
|
The result is that generated requests like the BYE from the dlg_end_dlg
|
|
mi function will pass through the proxy (looped).
|
|
|
|
Valid values are:
|
|
* 0 - Don't keep any proxy Record-Route headers
|
|
* 1 - Keep Record-route headers for the callee leg
|
|
* 2 - Keep Record-route headers for the caller leg
|
|
* 3 - Keep Record-route headers for both legs
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.62. Set dlg_keep_proxy_rr parameter
|
|
...
|
|
modparam("dialog", "keep_proxy_rr", 1)
|
|
...
|
|
|
|
6.64. bye_early_code (int)
|
|
|
|
This parameter defines the reply-code being used for dialogs being
|
|
terminated in early stage (e.g. before 200 OK/ACK).
|
|
Default value is “480”.
|
|
|
|
Example 1.63. Set bye_early_code parameter
|
|
...
|
|
modparam("dialog", "bye_early_code", 503)
|
|
...
|
|
|
|
6.65. bye_early_reason (string)
|
|
|
|
This parameter defines the reply-reason being used for dialogs being
|
|
terminated in early stage (e.g. before 200 OK/ACK).
|
|
Default value is “Temporarily Unavailable”.
|
|
|
|
Example 1.64. Set bye_early_reason parameter
|
|
...
|
|
modparam("dialog", "bye_early_reason", "Call terminated")
|
|
...
|
|
|
|
6.66. dlg_ctxiuid_mode (int)
|
|
|
|
Set dialog context iuid mode, which can specify additional cases when
|
|
the internal unique id should be set:
|
|
* 1 - set it when processing CANCEL requests.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.65. Set dlg_ctxiuid_mode parameter
|
|
...
|
|
modparam("dialog", "dlg_ctxiuid_mode", 1)
|
|
...
|
|
|
|
6.67. debug_variables (int)
|
|
|
|
Activate additional debugging for printing internal lists for dialog
|
|
variables. This output is only visible at debug log level and should
|
|
only be used for debugging. By default it is deactivated.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.66. Set debug_variables parameter
|
|
...
|
|
modparam("dialog", "debug_variables", 1)
|
|
...
|
|
|
|
6.68. dlg_mode (int)
|
|
|
|
Control how dialog state management is done. If set to 0, the the
|
|
management is done with tm module callbacks; if set to 1, tm callbacks
|
|
are not used, states have to be set from config.
|
|
|
|
Default value is “0”.
|
|
|
|
Example 1.67. Set dlg_mode parameter
|
|
...
|
|
modparam("dialog", "dlg_mode", 1)
|
|
...
|
|
|
|
7. Functions
|
|
|
|
7.1. set_dlg_profile(profile[, value])
|
|
7.2. unset_dlg_profile(profile[, value])
|
|
7.3. is_in_profile(profile[, value])
|
|
7.4. get_profile_size(profile[, value], size)
|
|
7.5. dlg_isflagset(flag)
|
|
7.6. dlg_setflag(flag)
|
|
7.7. dlg_resetflag(flag)
|
|
7.8. dlg_bye(side)
|
|
7.9. dlg_refer(side, address)
|
|
7.10. dlg_manage()
|
|
7.11. dlg_bridge(from, to, op)
|
|
7.12. dlg_get(callid, ftag, ttag)
|
|
7.13. dlg_get_var(callid, ftag, ttag, name, dst)
|
|
7.14. dlg_set_var(callid, ftag, ttag, name, value)
|
|
7.15. is_known_dlg()
|
|
7.16. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.17. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.18. dlg_set_property(attr)
|
|
7.19. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
7.20. dlg_set_ruri()
|
|
7.21. dlg_db_load_callid(cival)
|
|
7.22. dlg_db_load_extra()
|
|
7.23. dlg_reset_property(attr)
|
|
7.24. dlg_req_within(side, method, [headers], [content_type, content])
|
|
7.25. dlg_set_state(newstate)
|
|
|
|
7.1. set_dlg_profile(profile[, value])
|
|
|
|
Inserts the current dialog into a profile. Note that if the profile
|
|
does not support values, they will be silently discarded. Also, there
|
|
is no check for inserting the same dialog into the same profile
|
|
multiple times.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* profile - name of the profile to be added to;
|
|
* value (optional) - string value to define the membership of the
|
|
dialog in the profile. Note that the profile must support values.
|
|
Pseudo-variables are supported.
|
|
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, REPLY_ROUTE
|
|
and FAILURE_ROUTE.
|
|
|
|
Example 1.68. set_dlg_profile usage
|
|
...
|
|
set_dlg_profile("inbound_call");
|
|
set_dlg_profile("caller","$fu");
|
|
...
|
|
|
|
7.2. unset_dlg_profile(profile[, value])
|
|
|
|
Removes the current dialog from a profile.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* profile - name of the profile to be removed from;
|
|
* value (optional) - string value to define the belonging of the
|
|
dialog to the profile - note that the profile must support values.
|
|
Pseudo-variables are supported.
|
|
|
|
This function can be used from BRANCH_ROUTE, REPLY_ROUTE and
|
|
FAILURE_ROUTE.
|
|
|
|
Example 1.69. unset_dlg_profile usage
|
|
...
|
|
unset_dlg_profile("inbound_call");
|
|
unset_dlg_profile("caller","$fu");
|
|
...
|
|
|
|
7.3. is_in_profile(profile[, value])
|
|
|
|
Checks if the current dialog belongs to a profile. If the profile is
|
|
defined with values, then the check is also matching with the specific
|
|
value provided as parameter.
|
|
|
|
Note that if the profile is not defined with support for values, the
|
|
value parameter will be silently discarded.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* profile - name of the profile to be checked against;
|
|
* value (optional) - string value to be matched during the check.
|
|
Pseudo-variables are supported.
|
|
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, REPLY_ROUTE
|
|
and FAILURE_ROUTE.
|
|
|
|
Example 1.70. is_in_profile usage
|
|
...
|
|
if (is_in_profile("inbound_call")) {
|
|
log("this request belongs to an inbound call\n");
|
|
}
|
|
...
|
|
if (is_in_profile("caller","XX")) {
|
|
log("this request belongs to a call of user XX\n");
|
|
}
|
|
...
|
|
|
|
7.4. get_profile_size(profile[, value], size)
|
|
|
|
Returns the number of dialogs belonging to a profile. If the profile
|
|
supports values, the check can be reinforced to take into account a
|
|
specific value, i.e. how many dialogs were inserted into the profile
|
|
with a specific value. If no value is passed, only the membership of
|
|
the dialog in the profile per se is checked. Note that if the profile
|
|
does not support values, the value parameter will be silently
|
|
discarded.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* profile - name of the profile to get the size for;
|
|
* value (optional) - string value to further restrict the check.
|
|
Pseudo-variables are supported;
|
|
* size - an AVP or script variable to return the profile size in.
|
|
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, REPLY_ROUTE
|
|
and FAILURE_ROUTE.
|
|
|
|
Example 1.71. get_profile_size usage
|
|
...
|
|
if(get_profile_size("inbound_call","$avp(size)"))
|
|
xlog("currently there are $avp(size) inbound calls\n");
|
|
...
|
|
if(get_profile_size("caller","$fu","$avp(size)"))
|
|
xlog("currently, the user $fu has $avp(size) active outgoing calls\n");
|
|
...
|
|
|
|
7.5. dlg_isflagset(flag)
|
|
|
|
Check if the dialog flag is set or not.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* flag - index of the flag - can be pseudo-variable.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.72. dlg_isflagset usage
|
|
...
|
|
if(dlg_isflagset("1"))
|
|
{
|
|
...
|
|
}
|
|
...
|
|
|
|
7.6. dlg_setflag(flag)
|
|
|
|
Set a dialog flag.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* flag - index of the flag - can be pseudo-variable.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.73. dlg_setflag usage
|
|
...
|
|
dlg_setflag("1");
|
|
...
|
|
|
|
7.7. dlg_resetflag(flag)
|
|
|
|
Reset the dialog flag.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* flag - index of the flag - can be pseudo-variable.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.74. dlg_resetflag usage
|
|
...
|
|
dlg_resetflag("1");
|
|
...
|
|
|
|
7.8. dlg_bye(side)
|
|
|
|
Send BYE to parties of a dialog or - if in early stage - a CANCEL to
|
|
the B-Party and a SIP response to the A-Party (as defined in
|
|
bye_early_code / bye_early_reason).
|
|
|
|
Meaning of the parameters is as follows:
|
|
* side - where to send the BYE. It can be: 'caller', 'callee', or
|
|
'all' (send to both sides).
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.75. dlg_bye usage
|
|
...
|
|
dlg_bye("all");
|
|
...
|
|
|
|
7.9. dlg_refer(side, address)
|
|
|
|
Refer the 'side' to a new SIP 'address'.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* side - which side of the dialog to REFER. It can be: 'caller' or
|
|
'callee'.
|
|
* address - SIP address to refer to.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.76. dlg_refer usage
|
|
...
|
|
dlg_refer("caller", "sip:announcement@kamailio.org");
|
|
...
|
|
|
|
7.10. dlg_manage()
|
|
|
|
Process current SIP request with dialog module. It is an alternative to
|
|
setting dialog flag for initial INVITE and Route-parameter-callback
|
|
execution for within-dialog requests.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.77. dlg_manage usage
|
|
...
|
|
modparam("dialog", "default_timeout", 100)
|
|
...
|
|
request_route {
|
|
...
|
|
if(is_method("INVITE") && !has_totag())
|
|
{
|
|
$dlg_ctx(timeout_route) = "DLGTIMEOUT";
|
|
$dlg_ctx(timeout_bye) = 1;
|
|
}
|
|
dlg_manage();
|
|
...
|
|
}
|
|
...
|
|
|
|
7.11. dlg_bridge(from, to, op)
|
|
|
|
Bridge 'from' SIP address to 'to' SIP address via outbound proxy 'op'.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* from - SIP address of first side to call.
|
|
* to - SIP address to refer “from” to.
|
|
* op - outbound proxy SIP address.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.78. dlg_bridge usage
|
|
...
|
|
dlg_bridge("sip:user@kamailio.org", "sip:annoucement@kamailio.org",
|
|
"sip:kamailio.org:5080");
|
|
...
|
|
|
|
7.12. dlg_get(callid, ftag, ttag)
|
|
|
|
Search and set current dialog based on Call-ID, From-Tag and To-Tag
|
|
parameters.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* callid - SIP call-id.
|
|
* ftag - SIP From tag.
|
|
* ttag - SIP To tag (it can be empty string to match a dialog during
|
|
call setup (eg., match for CANCEL)).
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.79. dlg_get usage
|
|
...
|
|
if(dlg_get("abcdef", "123", "456"))
|
|
{
|
|
dlg_bye("all");
|
|
}
|
|
...
|
|
|
|
7.13. dlg_get_var(callid, ftag, ttag, name, dst)
|
|
|
|
Get dlg_var of another dialog value based on Call-ID, From-Tag and
|
|
To-Tag parameters.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* callid - SIP call-id.
|
|
* ftag - SIP From tag.
|
|
* ttag - SIP To tag. Use "" value to indicate early dialog.
|
|
* name - key name of the $dlg_var.
|
|
* dst - pv to store the value of $dlg_var(name).
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.80. dlg_get_var usage
|
|
...
|
|
if(dlg_get_var("$var(ci)", "$var(ft)", "456", "test", "$var(tmp)"))
|
|
{
|
|
xdbg("$$dlg_var(test):$var(tmp)\n");
|
|
}
|
|
...
|
|
|
|
7.14. dlg_set_var(callid, ftag, ttag, name, value)
|
|
|
|
Set dlg_var of another dialog value based on Call-ID, From-Tag and
|
|
To-Tag parameters.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* callid - SIP call-id.
|
|
* ftag - SIP From tag.
|
|
* ttag - SIP To tag. Use "" value to indicate early dialog.
|
|
* name - key name of the $dlg_var.
|
|
* value - string value to store at $dlg_var(name).
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.81. dlg_set_var usage
|
|
...
|
|
if(dlg_set_var("$var(ci)", "$var(ft)", "456", "test", "$var(tmp)"))
|
|
{
|
|
xdbg("set $$dlg_var(test):$var(tmp)\n");
|
|
}
|
|
# you can set vars in early dialog too
|
|
if(dlg_set_var("$var(ci)", "$var(ft)", "", "test", "$var(tmp)"))
|
|
{
|
|
xdbg("set $$dlg_var(test):$var(tmp)\n");
|
|
}
|
|
...
|
|
|
|
7.15. is_known_dlg()
|
|
|
|
This function checks if the current SIP message being processed belongs
|
|
to any transaction within an active dialog that the dialog module is
|
|
currently tracking. This is a check for tracking of any kind, without
|
|
regard to profiles.
|
|
|
|
This function has numerous potential applications, among which is that
|
|
it can be used to strengthen security for loose-routing sequential
|
|
(in-dialog) requests or responses to them, as by providing a
|
|
preventative check against spoofing on the proxy level instead of
|
|
leaving the issue purely to the receiving UA.
|
|
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, REPLY_ROUTE
|
|
and FAILURE_ROUTE.
|
|
|
|
Example 1.82. is_known_dlg() usage
|
|
...
|
|
if(!uri == myself) {
|
|
if(is_known_dlg()) {
|
|
xlog("Request $rm from $ci is in-dialog\n");
|
|
}
|
|
}
|
|
...
|
|
|
|
7.16. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
|
|
Set the dialog timeout. Dialog timeout will be updated if it was
|
|
already set. If h_entry and h_id parameters are not provided, the
|
|
dialog will be searched based on (callid, fromtag, totag) of currently
|
|
processed SIP message.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* timeout - the interval in seconds after which the dialog will time
|
|
out.
|
|
* h_entry - h_entry value of the iternal dialog identifier.
|
|
* h_id - h_id value if the internal dialog identifier.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.83. dlg_set_timeout usage
|
|
...
|
|
if(dlg_set_timeout("180", "123", "456"))
|
|
{
|
|
...
|
|
}
|
|
...
|
|
|
|
7.17. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
|
|
Like dlg_set_timeout(), but simultaneously sets the timeout of all
|
|
dialogs in a given profile. Can be constrained by profile value.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* profile - The dialog profile across which to apply the timeout.
|
|
value (optional) - The profile value to use when applying the
|
|
dialog timeout.
|
|
timeout - the interval in seconds after which the dialog will time
|
|
out.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.84. dlg_set_timeout_by_profile usage
|
|
...
|
|
# All dialogs belonging to user abc123 (tracked via set_dlg_profile())
|
|
# will be timed out in 3 seconds.
|
|
|
|
dlg_set_timeout_by_profile("users", "abc123", "3");
|
|
...
|
|
|
|
7.18. dlg_set_property(attr)
|
|
|
|
Set a dialog property - an attribute that enable/disable various
|
|
behaviours (e.g., sending keep alive requests).
|
|
|
|
Meaning of the parameters is as follows:
|
|
* attr - name of property. It can be:
|
|
+ 'ka-src' - send keep alive OPTION requests to caller
|
|
+ 'ka-dst' - send keep alive OPTION requests to callee
|
|
+ 'timeout-noreset' - don't reset timeout on in-dialog messages
|
|
reception
|
|
|
|
If keep alive is enabled for a dialog, the module will send SIP OPTIONS
|
|
requests with CSeq lower or equal than last request within dialog, with
|
|
the scope of detecting if the destination is still in the call. If the
|
|
keep alive request results in a local timeout or '481 Call
|
|
Leg/Transaction Does Not Exist', then the dialog is ended from the
|
|
server.
|
|
|
|
If 'timeout-noreset' is set, dialog timeout won't be reset upon
|
|
reception of in-dialog messages (default behavior).
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.85. dlg_set_property usage
|
|
...
|
|
dlg_set_property("ka-src");
|
|
dlg_set_property("ka-dst");
|
|
dlg_set_property("timeout-noreset");
|
|
...
|
|
|
|
7.19. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
|
|
Manage remote profile via config file. A remote profile item is
|
|
considered when the dialog is not managed by this server instance. The
|
|
notification to add/remove can be received via SIP or a RPC command,
|
|
the operation can be then triggered from configuration file. This
|
|
should allow counting active dialogs in a profile that are managed by
|
|
multiple SIP server instances.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* cmd - the operations to do: add - add an item in profile; rm -
|
|
remove an item from profile
|
|
* profile - name of profile
|
|
* value - value for profile (if no value is needed for that profile,
|
|
use an empty string.
|
|
* expires - absolute time (unix timestamp) when this profile item
|
|
should be removed automatically (time based), if still in the
|
|
profile
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.86. dlg_remote_profile usage
|
|
...
|
|
$var(exp) = 3600 + $Ts;
|
|
dlg_remote_profile("add", "caller", "test", "$sruid", "$var(exp)");
|
|
...
|
|
|
|
7.20. dlg_set_ruri()
|
|
|
|
This function sets the R-URI with the corresponding endpoint address
|
|
stored in dialog structure (i.e., its Contact field).
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.87. dlg_set_ruri() usage
|
|
...
|
|
if(has_totag() and is_present_hf("Route") and uri==myself ) {
|
|
if(dlg_set_ruri()) {
|
|
xlog("Request URI changed from [$ou] to dlg value: [$ru]\n");
|
|
}
|
|
}
|
|
...
|
|
|
|
7.21. dlg_db_load_callid(cival)
|
|
|
|
Load dialog record from database matching on Call-Id provided as
|
|
parameter.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.88. dlg_db_load_callid() usage
|
|
...
|
|
if(has_totag()) {
|
|
if(!is_known_dlg()) {
|
|
dlg_db_load_callid("$ci");
|
|
if(!is_known_dlg()) {
|
|
xlog("no dialog found with callid: $ci\n");
|
|
}
|
|
}
|
|
}
|
|
...
|
|
|
|
7.22. dlg_db_load_extra()
|
|
|
|
Load all dialog records from database that are not in memory of the
|
|
current Kamailio instance.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.89. dlg_db_load_extra() usage
|
|
...
|
|
if(has_totag()) {
|
|
if(!is_known_dlg()) {
|
|
dlg_db_load_extra();
|
|
if(!is_known_dlg()) {
|
|
xlog("no dialog found with callid: $ci\n");
|
|
}
|
|
}
|
|
}
|
|
...
|
|
|
|
7.23. dlg_reset_property(attr)
|
|
|
|
Reset a dialog property - an attribute that enable/disable various
|
|
behaviours (e.g., sending keep alive requests).
|
|
|
|
Meaning of the parameters is as follows:
|
|
* attr - name of property. It can be:
|
|
+ 'ka-src' - send keep alive OPTION requests to caller
|
|
+ 'ka-dst' - send keep alive OPTION requests to callee
|
|
+ 'timeout-noreset' - don't reset timeout on in-dialog messages
|
|
reception
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.90. dlg_reset_property usage
|
|
...
|
|
dlg_reset_property("ka-src");
|
|
dlg_reset_property("ka-dst");
|
|
dlg_reset_property("timeout-noreset");
|
|
...
|
|
|
|
7.24. dlg_req_within(side, method, [headers], [content_type, content])
|
|
|
|
Sends an in-dialog SIP Request with method to a party of a dialog
|
|
indicated by the side parameter.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* side - where to send the request. It can be: 'caller', 'callee', or
|
|
'all' (send to both sides).
|
|
* method - Method of the request
|
|
* headers (optional) - additional headers to be added to the request.
|
|
* content_type (optional) - Content-Type of the request body - will
|
|
be added as Content-Type Header.
|
|
* content (optional) - Content to be sent as body.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.91. dlg_req_within usage
|
|
...
|
|
# Send a simple request:
|
|
dlg_req_within("all", "OPTIONS");
|
|
...
|
|
# Send a simple request with extra headers:
|
|
dlg_req_within("caller", "OPTIONS", "X-Info: Bandwidth granted\r\nX-Info
|
|
-2: Go ahead\r\n");
|
|
...
|
|
# Send a simple request with body:
|
|
dlg_req_within("caller", "UPDATE", "application/sdp", "...some SDP...");
|
|
...
|
|
# Send a simple request with extra headers and body:
|
|
dlg_req_within("callee", "INFO", "X-Info: Bandwidth granted\r\n", "appli
|
|
cation/sdp", "...some SDP...");
|
|
...
|
|
|
|
7.25. dlg_set_state(newstate)
|
|
|
|
Set the state for dialog matching current message.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* newstate - the new state. It can be:
|
|
+ 'unconfirmed'
|
|
+ 'early'
|
|
+ 'answered'
|
|
+ 'confirmed'
|
|
+ 'deleted'
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.92. dlg_set_state usage
|
|
...
|
|
dlg_set_state("early");
|
|
...
|
|
|
|
8. Statistics
|
|
|
|
8.1. active_dialogs
|
|
8.2. early_dialogs
|
|
8.3. processed_dialogs
|
|
8.4. expired_dialogs
|
|
8.5. failed_dialogs
|
|
|
|
8.1. active_dialogs
|
|
|
|
Returns the number of current active dialogs (may be confirmed or not).
|
|
|
|
8.2. early_dialogs
|
|
|
|
Returns the number of early dialogs.
|
|
|
|
8.3. processed_dialogs
|
|
|
|
Returns the total number of processed dialogs (terminated, expired or
|
|
active) from the startup.
|
|
|
|
8.4. expired_dialogs
|
|
|
|
Returns the total number of expired dialogs from the startup.
|
|
|
|
8.5. failed_dialogs
|
|
|
|
Returns the number of failed dialogs.
|
|
|
|
9. RPC Commands
|
|
|
|
9.1. dlg.list
|
|
9.2. dlg.list_ctx
|
|
9.3. dlg.list_match
|
|
9.4. dlg.list_match_ctx
|
|
9.5. dlg.dump_file
|
|
9.6. dlg.dlg_list
|
|
9.7. dlg.dlg_list_ctx
|
|
9.8. dlg.terminate_dlg
|
|
9.9. dlg.end_dlg
|
|
9.10. dlg.set_state
|
|
9.11. dlg.profile_get_size
|
|
9.12. dlg.profile_list
|
|
9.13. dlg.bridge_dlg
|
|
9.14. dlg.stats_active
|
|
9.15. dlg.is_alive
|
|
9.16. dlg.briefing
|
|
|
|
9.1. dlg.list
|
|
|
|
Lists the description of all dialogs (active calls).
|
|
|
|
Name: dlg.list
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.list
|
|
...
|
|
|
|
9.2. dlg.list_ctx
|
|
|
|
The same as the “dlg_list” but including in the dialog description the
|
|
associated context from modules sitting on top of the dialog module.
|
|
|
|
Name: dlg.list_ctx
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.list_ctx
|
|
...
|
|
|
|
9.3. dlg.list_match
|
|
|
|
Lists the details of matching dialogs. The paramters specify the
|
|
matching key, operator, value and optionally a limit of matched
|
|
dialogs.
|
|
|
|
Name: dlg.list_match
|
|
|
|
Parameters:
|
|
* mkey - matching key. It can be: 'ruri' - match against R-URI of the
|
|
dialog; 'furi' - match against From header URI of the dialog;
|
|
'turi' - match against the To header URI of the dialog; 'callid' -
|
|
match against Call-Id value; 'start_ts' - match against start
|
|
timestamp.
|
|
* mop - matching operator. It can be: 'eq' - match using string
|
|
comparison; 're' - match using regular expression; 'sw' - match
|
|
using starts-with (prefix) comparison; 'gt' - match using integer
|
|
greater comparison; 'lt' - match using integer lesser comparison.
|
|
Integer comparison can be used only with 'start_ts' key.
|
|
* mval - matching value.
|
|
* limit (optional) - limit of matched dialogs.
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.list_match furi eq sip:alice@test.com 2
|
|
...
|
|
kamcmd dlg.list_match furi sw sip:alice@
|
|
...
|
|
kamcmd dlg.list_match start_ts gt s:1641550904
|
|
...
|
|
|
|
9.4. dlg.list_match_ctx
|
|
|
|
Similar to “dlg.list_match”, but including in the attributes associated
|
|
with the dialog context from modules sitting on top of the dialog
|
|
module.
|
|
|
|
Name: dlg.list_match_ctx
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.list_match_ctx furi sw sip:alice@
|
|
...
|
|
|
|
9.5. dlg.dump_file
|
|
|
|
Dump all dialogs in a json file. (much faster than dlg.list)
|
|
|
|
Name: dlg.dump_file
|
|
|
|
Parameters:
|
|
* file name output file name
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.dump_file "/tmp/dlg.json"
|
|
...
|
|
|
|
9.6. dlg.dlg_list
|
|
|
|
Lists the description of one dialog. The dialog identifiers are to be
|
|
passed as parameter (callid and optionally fromtag).
|
|
|
|
Name: dlg.dlg_list
|
|
|
|
Parameters:
|
|
* callid callid of the dialog to be listed.
|
|
* from_tag from tag (as per initial request) of the dialog to be
|
|
listed.
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.dlg_list abcdrssfrs122444@192.168.1.1 AAdfeEFF33
|
|
...
|
|
kamcmd dlg.dlg_list abcdrssfrs122444@192.168.1.1
|
|
...
|
|
|
|
9.7. dlg.dlg_list_ctx
|
|
|
|
The same as the “dlg.list_list” but including in the dialog description
|
|
the associated context from modules sitting on top of the dialog
|
|
module.
|
|
|
|
Name: dlg.dlg_list_ctx
|
|
|
|
Parameters: see “dlg_list”
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.list_ctx abcdrssfrs122444@192.168.1.1 AAdfeEFF33
|
|
...
|
|
kamcmd dlg.list_ctx abcdrssfrs122444@192.168.1.1
|
|
...
|
|
|
|
9.8. dlg.terminate_dlg
|
|
|
|
Terminates an ongoing dialog by sending BYE in both directions,
|
|
matching the dialog on call-id, from tag and to tag.
|
|
|
|
Name: dlg.terminate_dlg
|
|
|
|
Parameters:
|
|
* callid - callid of dialog to be terminated
|
|
* from_tag - from tag of the dialog to terminated
|
|
* to_tag - to tag of the dialog to terminated
|
|
|
|
The command works only for confirmed dialogs.
|
|
|
|
RPC Command Format:
|
|
kamcmd dlg.terminate_dlg callid12345 fromtag123 totag123
|
|
|
|
9.9. dlg.end_dlg
|
|
|
|
Terminates an ongoing dialog by sending BYE in both directions.
|
|
|
|
Name: dlg.end_dlg
|
|
|
|
Parameters:
|
|
* h_entry - hash entry of the dialog in the internal dialog table
|
|
* h_id - hash id of the dialog on the hash entry
|
|
* extra_hdrs - (optional) string containg extra headers (full format)
|
|
to be added to the BYE requests.
|
|
|
|
The values for the h_entry and h_id can be obtained via the dlg_list
|
|
RPC command.
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.end_dlg 342 56
|
|
...
|
|
|
|
9.10. dlg.set_state
|
|
|
|
Set state for the dialog matching the dialog on Call-ID, From-Tag and
|
|
To-Tag.
|
|
|
|
Name: dlg.kill_active_dlg
|
|
|
|
Parameters:
|
|
* callid - Call-ID of active dialog to kill
|
|
* from_tag - From-Tag of active dialog to kill
|
|
* to_tag - To-tag of active dialog to kill
|
|
* state - The value for new state
|
|
|
|
At this moment, the command targets the need to change from active
|
|
dialogs (state 4) to terminated state (5), although it allows setting
|
|
other state value. Be careful using with it, it can cause side effects
|
|
and the terminated dialog is wiped out silently. Dialog ending
|
|
functions are not executed, such as accounting end-of-call events,
|
|
dialog-end events, module-generated BYE requests, etc. After executing
|
|
the command, dialog remains in memory until execution of the recurring
|
|
function in charge of removing old dialogs (a "dialog in delete state
|
|
is too old" will then be logged).
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.set_state callid12345 fromtag123 totag123 5
|
|
...
|
|
|
|
9.11. dlg.profile_get_size
|
|
|
|
Returns the number of dialogs belonging to a profile. If the profile
|
|
supports values, the check can be reinforced to take into account a
|
|
specific value - how many dialogs were inserted into the profile with a
|
|
specific value. If no value is passed, only the simply belonging of the
|
|
dialog to the profile is checked. Note that if the profile does not
|
|
support values, the value parameter will be silently discarded.
|
|
|
|
Name: dlg.profile_get_size
|
|
|
|
Parameters:
|
|
* profile - name of the profile to get the value for.
|
|
* value (optional)- string value to further restrict the check;
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.dlg.profile_get_size inbound_calls
|
|
...
|
|
|
|
9.12. dlg.profile_list
|
|
|
|
Lists all the dialogs belonging to a profile. If the profile supports
|
|
values, the check can be reinforced to take into account a specific
|
|
value, i.e. list only the dialogs that were inserted into the profile
|
|
with that specific value. If no value is passed, all dialogs belonging
|
|
to the profile will be listed. Note that if the profile does not
|
|
supports values, this will be silently discarded.
|
|
|
|
Name: dlg.profile_list
|
|
|
|
Parameters:
|
|
* profile - name of the profile to list the dialog for.
|
|
* value (optional)- string value to further restrict the check;
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.profile_list inbound_calls
|
|
...
|
|
|
|
9.13. dlg.bridge_dlg
|
|
|
|
Bridge two SIP addresses into a call using INVITE(hold)-REFER-BYE
|
|
mechanism.
|
|
|
|
Name: dlg.bridge_dlg
|
|
|
|
Parameters:
|
|
* from - SIP address to initiate the call
|
|
* to - SIP address to refer 'from' to
|
|
* op (optional) - outbound proxy SIP address. If its value is set to
|
|
'.' (dot), then it is ignored (like it would not have been
|
|
provided).
|
|
* body (optional) - SDP body for initial INVITE. If its value is set
|
|
to '.' (dot), then it is ignored (like it would not have been
|
|
provided). If body is not set via RPC command parameter, then an
|
|
internal generated SDP with G711a and G711u is used. If its value
|
|
is set to '' (empty string) or '_' (underline), then the INVITE is
|
|
sent without an SDP body.
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.bridge_dlg _from_ _to_ _op_
|
|
...
|
|
|
|
9.14. dlg.stats_active
|
|
|
|
Get stats about active dialogs by scanning internal list of dialogs
|
|
(not relying on core stats framework).
|
|
|
|
Name: dlg.stats_active
|
|
|
|
Parameters:
|
|
* local_only (optional) - if not 0 then filter out non local dialogs
|
|
(the receiving socket is not found locally, from C code point of
|
|
view, the bind_addr info is not set).
|
|
|
|
Returned fields
|
|
* starting - initial INVITE has been processed, no ringing or 1xx has
|
|
been received.
|
|
* connecting - initial INVITE was forwarded and rining or 1xx has
|
|
been received.
|
|
* answering - initial INVITE received 200 OK, but ACK was not handled
|
|
yet.
|
|
* ongoing - ongoing active dialog, after the ACK was processed.
|
|
* all - all active dialogs, respectively the sum of the above values.
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.stats_active
|
|
...
|
|
|
|
9.15. dlg.is_alive
|
|
|
|
Check whether a dialog matching the parameter is in confirmed state
|
|
(answered and alive).
|
|
|
|
Name: dlg.is_alive
|
|
|
|
Parameters:
|
|
* callid - callid of dialog
|
|
* from_tag - from tag of the dialog
|
|
* to_tag - to tag of the dialog
|
|
|
|
This command will return error if dialog is not found or not confirmed
|
|
state (answered).
|
|
|
|
RPC Command Format:
|
|
...
|
|
kamcmd dlg.is_alive callid123 fromtag123 totag123
|
|
...
|
|
|
|
9.16. dlg.briefing
|
|
|
|
Lists fewer attributes for dialog records in memory. The dialog hash
|
|
entry and id are added always, the rest of them are a matter of 'attrs'
|
|
parameter.
|
|
|
|
Name: dlg.briefing
|
|
|
|
Parameters:
|
|
* attrs - (optional) a list of characters (flags) representing the
|
|
fields to be added to the response. If it is missing, its default
|
|
value is 'ftcFT' (note the characters are case sensitive).
|
|
The characters can be:
|
|
+ f - From URI
|
|
+ t - To URI
|
|
+ c - Call-ID
|
|
+ F - From tag
|
|
+ T - To tag
|
|
+ I - Init time
|
|
+ S - Start time
|
|
+ E - End time
|
|
+ s - State
|
|
|
|
RPC Command Example:
|
|
...
|
|
kamctl rpc dlg.briefing
|
|
...
|
|
kamctl rpc dlg.briefing "ft"
|
|
...
|
|
|
|
10. Exported Variables
|
|
|
|
10.1. $DLG_count
|
|
10.2. $DLG_status
|
|
10.3. $DLG_lifetime
|
|
10.4. $dlg(...)
|
|
10.5. $dlg_ctx(...)
|
|
10.6. $dlg_var(key)
|
|
|
|
10.1. $DLG_count
|
|
|
|
Returns the number of current active dialogs (may be confirmed or not).
|
|
|
|
10.2. $DLG_status
|
|
|
|
Returns the status of the dialog corresponding to the processed
|
|
sequential request. This PV will be available only for sequential
|
|
requests, after doing loose_route().
|
|
|
|
Value may be:
|
|
* NULL - Dialog not found.
|
|
* 3 - Confirmed by a final reply but no ACK received yet.
|
|
* 4 - Confirmed by a final reply and ACK received.
|
|
* 5 - Dialog ended.
|
|
|
|
10.3. $DLG_lifetime
|
|
|
|
Returns the duration (in seconds) of the dialog corresponding to the
|
|
processed sequential request. The duration is calculated from the
|
|
dialog confirmation and the current moment. This PV will be available
|
|
only for sequential requests, after doing loose_route().
|
|
|
|
NULL will be returned if there is no dialog for the request.
|
|
|
|
10.4. $dlg(...)
|
|
|
|
Access to dialog attributes.
|
|
|
|
10.5. $dlg_ctx(...)
|
|
|
|
Access to dialog context attributes.
|
|
|
|
10.6. $dlg_var(key)
|
|
|
|
This is a read/write variable that can be used to store custom values
|
|
assigned with a dialog (e.g. the URI of a billing-server, an assigned
|
|
emergency-server). This pseudo-variable will be available only for
|
|
subsequential requests after doing loose_route().
|
|
|
|
Note: You will receive "NULL", if there is no dialog for this request.
|
|
|
|
11. Event Routes
|
|
|
|
11.1. event_route[dialog:start]
|
|
11.2. event_route[dialog:end]
|
|
11.3. event_route[dialog:failed]
|
|
|
|
11.1. event_route[dialog:start]
|
|
|
|
Executed when 200 OK reply for INVITE is processed.
|
|
|
|
11.2. event_route[dialog:end]
|
|
|
|
Executed when the BYE for the call is processed or the dialog timed
|
|
out.
|
|
|
|
11.3. event_route[dialog:failed]
|
|
|
|
Executed when dialog is not completed (300 or greater reply code to
|
|
INVITE).
|
|
|
|
Chapter 2. Developer Guide
|
|
|
|
Table of Contents
|
|
|
|
1. Available Functions
|
|
|
|
1.1. register_dlgcb (dialog, type, cb, param, free_param_cb)
|
|
1.2. terminate_dlg (dlg, hdrs)
|
|
|
|
1. Available Functions
|
|
|
|
1.1. register_dlgcb (dialog, type, cb, param, free_param_cb)
|
|
1.2. terminate_dlg (dlg, hdrs)
|
|
|
|
1.1. register_dlgcb (dialog, type, cb, param, free_param_cb)
|
|
|
|
Register a new callback to the dialog.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* struct dlg_cell* dlg - dialog to register callback to. It may be
|
|
NULL only for DLGCB_CREATED callback type, which is not a per
|
|
dialog type.
|
|
* int type - types of callbacks; more types may be registered for the
|
|
same callback function; only DLGCB_LOADED and DLGCB_CREATED must be
|
|
registered alone. Possible types:
|
|
+ DLGCB_LOADED
|
|
+ DLGCB_CREATED - called when a new dialog is created - it's a
|
|
global type (not associated to any dialog)
|
|
+ DLGCB_FAILED - called when the dialog was negatively replied
|
|
(non-2xx) - it's a per dialog type.
|
|
+ DLGCB_CONFIRMED_NA - called when the dialog is confirmed (2xx
|
|
replied) but the setup-concluding ACK message from the caller
|
|
is yet pending - it's a per dialog type.
|
|
+ DLGCB_CONFIRMED - called when the dialog is confirmed (2xx
|
|
replied) and the setup-concluding ACK message from the caller
|
|
has been seen - it's a per dialog type.
|
|
+ DLGCB_REQ_WITHIN - called when the dialog matches a sequential
|
|
request (excluding setup-concluding ACK messages which are
|
|
handled in DLGCB_CONFIRMED) - it's a per dialog type.
|
|
+ DLGCB_TERMINATED - called when the dialog is terminated via
|
|
BYE - it's a per dialog type.
|
|
+ DLGCB_TERMINATED_CONFIRMED - called when response to a BYE
|
|
request is received - it's a per dialog type.
|
|
+ DLGCB_EXPIRED - called when the dialog expires without
|
|
receiving a BYE - it's a per dialog type.
|
|
+ DLGCB_EARLY - called when the dialog is created in an early
|
|
state (18x replied) - it's a per dialog type.
|
|
+ DLGCB_RESPONSE_FWDED - called when the dialog matches a reply
|
|
to the initial INVITE request - it's a per dialog type.
|
|
+ DLGCB_RESPONSE_WITHIN - called when the dialog matches a reply
|
|
to a subsequent in dialog request - it's a per dialog type.
|
|
+ DLGCB_RPC_CONTEXT - called when the rpc dlg_list_ctx command
|
|
is invoked - it's a per dialog type.
|
|
+ DLGCB_SPIRALED - called when the dialog matches a spiraling
|
|
request - it's a per dialog type.
|
|
+ DLGCB_DESTROY
|
|
* dialog_cb cb - callback function to be called. Prototype is: “void
|
|
(dialog_cb) (struct dlg_cell* dlg, int type, struct dlg_cb_params *
|
|
params); ”
|
|
* void *param - parameter to be passed to the callback function.
|
|
* param_free callback_param_free - callback function to be called to
|
|
free the param. Prototype is: “void (param_free_cb) (void *param);”
|
|
|
|
1.2. terminate_dlg (dlg, hdrs)
|
|
|
|
Terminate a Dialog
|
|
|
|
Meaning of parameters is as follows:
|
|
* struct dlg_cell* dlg - dialog to terminate.
|
|
* str* hdrs - string containing extra headers (full format) to be
|
|
added to the BYE requests of the dialog.
|
|
|
|
Chapter 3. Frequently Asked Questions
|
|
|
|
3.1. What happened with “use_tight_match” parameter?
|
|
3.2. Where can I find more about Kamailio?
|
|
3.3. Where can I post a question about this module?
|
|
3.4. How can I report a bug?
|
|
|
|
3.1.
|
|
|
|
What happened with “use_tight_match” parameter?
|
|
|
|
The parameter was removed with version 1.3 as the option of tight
|
|
matching became mandatory and not configurable. Now, the tight matching
|
|
is done all the time (when using DID matching).
|
|
|
|
3.2.
|
|
|
|
Where can I find more about Kamailio?
|
|
|
|
Take a look at https://www.kamailio.org/.
|
|
|
|
3.3.
|
|
|
|
Where can I post a question about this module?
|
|
|
|
First at all check if your question was already answered on one of our
|
|
mailing lists:
|
|
* User Mailing List -
|
|
https://lists.kamailio.org/mailman3/postorius/lists/sr-users.lists.
|
|
kamailio.org/
|
|
* Developer Mailing List -
|
|
https://lists.kamailio.org/mailman3/postorius/lists/sr-dev.lists.ka
|
|
mailio.org/
|
|
|
|
E-mails regarding any stable Kamailio release should be sent to
|
|
<sr-users@lists.kamailio.org> and e-mails regarding development
|
|
versions should be sent to <sr-dev@lists.kamailio.org>.
|
|
|
|
3.4.
|
|
|
|
How can I report a bug?
|
|
|
|
Please follow the guidelines provided at:
|
|
https://github.com/kamailio/kamailio/issues.
|