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.
2111 lines
62 KiB
2111 lines
62 KiB
dialog Module
|
|
|
|
Bogdan-Andrei Iancu
|
|
|
|
Voice Sistem SRL
|
|
|
|
Carsten Bock
|
|
|
|
ng-voice.com
|
|
|
|
Edited by
|
|
|
|
Bogdan-Andrei Iancu
|
|
|
|
Edited by
|
|
|
|
Carsten Bock
|
|
|
|
Edited by
|
|
|
|
Alex Balashov
|
|
|
|
<abalashov@evaristesys.com>
|
|
|
|
Copyright © 2006 Voice Sistem SRL
|
|
|
|
Copyright © 2011 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. dlg_extra_hdrs (string)
|
|
6.8. dlg_match_mode (integer)
|
|
6.9. detect_spirals (integer)
|
|
6.10. db_url (string)
|
|
6.11. db_mode (integer)
|
|
6.12. db_update_period (integer)
|
|
6.13. db_fetch_rows (integer)
|
|
6.14. db_skip_load (integer)
|
|
6.15. table_name (string)
|
|
6.16. call_id_column (string)
|
|
6.17. from_uri_column (string)
|
|
6.18. from_tag_column (string)
|
|
6.19. to_uri_column (string)
|
|
6.20. to_tag_column (string)
|
|
6.21. from_cseq_column (string)
|
|
6.22. to_cseq_column (string)
|
|
6.23. from_route_column (string)
|
|
6.24. to_route_column (string)
|
|
6.25. from_contact_column (string)
|
|
6.26. to_contact_column (string)
|
|
6.27. from_sock_column (string)
|
|
6.28. to_sock_column (string)
|
|
6.29. h_id_column (string)
|
|
6.30. h_entry_column (string)
|
|
6.31. state_column (string)
|
|
6.32. start_time_column (string)
|
|
6.33. timeout_column (string)
|
|
6.34. sflags_column (string)
|
|
6.35. toroute_column (string)
|
|
6.36. vars_table_name (string)
|
|
6.37. vars_h_id_column (string)
|
|
6.38. vars_h_entry_column (string)
|
|
6.39. vars_key_column (string)
|
|
6.40. vars_value_column (string)
|
|
6.41. profiles_with_value (string)
|
|
6.42. profiles_no_value (string)
|
|
6.43. bridge_controller (string)
|
|
6.44. bridge_contact (string)
|
|
6.45. initial_cbs_inscript (int)
|
|
6.46. send_bye (int)
|
|
6.47. wait_ack (int)
|
|
6.48. ka_timer (int)
|
|
6.49. ka_interval (int)
|
|
6.50. timeout_noreset (int)
|
|
6.51. timer_procs (int)
|
|
6.52. track_cseq_updates (int)
|
|
6.53. lreq_callee_headers (string)
|
|
|
|
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. is_known_dlg()
|
|
7.14. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.15. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.16. dlg_set_property(attr)
|
|
7.17. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
|
|
8. Statistics
|
|
|
|
8.1. active_dialogs
|
|
8.2. early_dialogs
|
|
8.3. processed_dialogs
|
|
8.4. expired_dialogs
|
|
8.5. failed_dialogs
|
|
|
|
9. MI Commands
|
|
|
|
9.1. dlg_list
|
|
9.2. dlg_list_ctx
|
|
9.3. dlg_end_dlg
|
|
9.4. dlg_terminate_dlg
|
|
9.5. profile_get_size
|
|
9.6. profile_list_dlgs
|
|
9.7. dlg_bridge
|
|
|
|
10. Exported RPC Functions
|
|
|
|
10.1. dlg.list
|
|
10.2. dlg.list_ctx
|
|
10.3. dlg.dlg_list
|
|
10.4. dlg.dlg_list_ctx
|
|
10.5. dlg.end_dlg
|
|
10.6. dlg.profile_get_size
|
|
10.7. dlg.profile_list
|
|
10.8. dlg.bridge_dlg
|
|
|
|
11. Exported pseudo-variables
|
|
|
|
11.1. $DLG_count
|
|
11.2. $DLG_status
|
|
11.3. $DLG_lifetime
|
|
11.4. $dlg(...)
|
|
11.5. $dlg_ctx(...)
|
|
11.6. $dlg_var(key)
|
|
|
|
12. Event Routes
|
|
|
|
12.1. event_route[dialog:start]
|
|
12.2. event_route[dialog:end]
|
|
12.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 dlg_flag parameter
|
|
1.5. Set timeout_avp parameter
|
|
1.6. Set default_timeout parameter
|
|
1.7. Set dlf_extra_hdrs parameter
|
|
1.8. Set dlg_match_mode parameter
|
|
1.9. Set detect_spirals parameter
|
|
1.10. Set db_url parameter
|
|
1.11. Set db_mode parameter
|
|
1.12. Set db_update_period parameter
|
|
1.13. Set db_fetch_rows parameter
|
|
1.14. Set db_skip_load parameter
|
|
1.15. Set table_name parameter
|
|
1.16. Set callid_column parameter
|
|
1.17. Set from_uri_column parameter
|
|
1.18. Set from_tag_column parameter
|
|
1.19. Set to_uri_column parameter
|
|
1.20. Set to_tag_column parameter
|
|
1.21. Set from_cseq_column parameter
|
|
1.22. Set to_cseq_column parameter
|
|
1.23. Set from_route_column parameter
|
|
1.24. Set to_route_column parameter
|
|
1.25. Set from_contact_column parameter
|
|
1.26. Set to_contact_column parameter
|
|
1.27. Set from_sock_column parameter
|
|
1.28. Set to_sock_column parameter
|
|
1.29. Set h_id_column parameter
|
|
1.30. Set h_entry_column parameter
|
|
1.31. Set state_column parameter
|
|
1.32. Set start_time_column parameter
|
|
1.33. Set timeout_column parameter
|
|
1.34. Set sflags_column parameter
|
|
1.35. Set toroute_column parameter
|
|
1.36. Set vars_table_name parameter
|
|
1.37. Set vars_h_id_column parameter
|
|
1.38. Set vars_h_entry_column parameter
|
|
1.39. Set vars_key_column parameter
|
|
1.40. Set vars_value_column parameter
|
|
1.41. Set profiles_with_value parameter
|
|
1.42. Set profiles_no_value parameter
|
|
1.43. Set bridge_controller parameter
|
|
1.44. Set bridge_contact parameter
|
|
1.45. Set initial_cbs_inscript parameter
|
|
1.46. Set send_bye parameter
|
|
1.47. Set wait_ack parameter
|
|
1.48. Set ka_timer parameter
|
|
1.49. Set ka_interval parameter
|
|
1.50. Set timeout_noreset parameter
|
|
1.51. Set timer_procs parameter
|
|
1.52. Set track_cseq_updates parameter
|
|
1.53. Set lreq_callee_headers parameter
|
|
1.54. set_dlg_profile usage
|
|
1.55. unset_dlg_profile usage
|
|
1.56. is_in_profile usage
|
|
1.57. get_profile_size usage
|
|
1.58. dlg_isflagset usage
|
|
1.59. dlg_setflag usage
|
|
1.60. dlg_resetflag usage
|
|
1.61. dlg_bye usage
|
|
1.62. dlg_refer usage
|
|
1.63. dlg_manage usage
|
|
1.64. dlg_bridge usage
|
|
1.65. dlg_get usage
|
|
1.66. is_known_dlg() usage
|
|
1.67. dlg_set_timeout usage
|
|
1.68. dlg_set_timeout_by_profile usage
|
|
1.69. dlg_set_property usage
|
|
1.70. dlg_remote_profile 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. dlg_extra_hdrs (string)
|
|
6.8. dlg_match_mode (integer)
|
|
6.9. detect_spirals (integer)
|
|
6.10. db_url (string)
|
|
6.11. db_mode (integer)
|
|
6.12. db_update_period (integer)
|
|
6.13. db_fetch_rows (integer)
|
|
6.14. db_skip_load (integer)
|
|
6.15. table_name (string)
|
|
6.16. call_id_column (string)
|
|
6.17. from_uri_column (string)
|
|
6.18. from_tag_column (string)
|
|
6.19. to_uri_column (string)
|
|
6.20. to_tag_column (string)
|
|
6.21. from_cseq_column (string)
|
|
6.22. to_cseq_column (string)
|
|
6.23. from_route_column (string)
|
|
6.24. to_route_column (string)
|
|
6.25. from_contact_column (string)
|
|
6.26. to_contact_column (string)
|
|
6.27. from_sock_column (string)
|
|
6.28. to_sock_column (string)
|
|
6.29. h_id_column (string)
|
|
6.30. h_entry_column (string)
|
|
6.31. state_column (string)
|
|
6.32. start_time_column (string)
|
|
6.33. timeout_column (string)
|
|
6.34. sflags_column (string)
|
|
6.35. toroute_column (string)
|
|
6.36. vars_table_name (string)
|
|
6.37. vars_h_id_column (string)
|
|
6.38. vars_h_entry_column (string)
|
|
6.39. vars_key_column (string)
|
|
6.40. vars_value_column (string)
|
|
6.41. profiles_with_value (string)
|
|
6.42. profiles_no_value (string)
|
|
6.43. bridge_controller (string)
|
|
6.44. bridge_contact (string)
|
|
6.45. initial_cbs_inscript (int)
|
|
6.46. send_bye (int)
|
|
6.47. wait_ack (int)
|
|
6.48. ka_timer (int)
|
|
6.49. ka_interval (int)
|
|
6.50. timeout_noreset (int)
|
|
6.51. timer_procs (int)
|
|
6.52. track_cseq_updates (int)
|
|
6.53. lreq_callee_headers (string)
|
|
|
|
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. is_known_dlg()
|
|
7.14. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.15. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.16. dlg_set_property(attr)
|
|
7.17. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
|
|
8. Statistics
|
|
|
|
8.1. active_dialogs
|
|
8.2. early_dialogs
|
|
8.3. processed_dialogs
|
|
8.4. expired_dialogs
|
|
8.5. failed_dialogs
|
|
|
|
9. MI Commands
|
|
|
|
9.1. dlg_list
|
|
9.2. dlg_list_ctx
|
|
9.3. dlg_end_dlg
|
|
9.4. dlg_terminate_dlg
|
|
9.5. profile_get_size
|
|
9.6. profile_list_dlgs
|
|
9.7. dlg_bridge
|
|
|
|
10. Exported RPC Functions
|
|
|
|
10.1. dlg.list
|
|
10.2. dlg.list_ctx
|
|
10.3. dlg.dlg_list
|
|
10.4. dlg.dlg_list_ctx
|
|
10.5. dlg.end_dlg
|
|
10.6. dlg.profile_get_size
|
|
10.7. dlg.profile_list
|
|
10.8. dlg.bridge_dlg
|
|
|
|
11. Exported pseudo-variables
|
|
|
|
11.1. $DLG_count
|
|
11.2. $DLG_status
|
|
11.3. $DLG_lifetime
|
|
11.4. $dlg(...)
|
|
11.5. $dlg_ctx(...)
|
|
11.6. $dlg_var(key)
|
|
|
|
12. Event Routes
|
|
|
|
12.1. event_route[dialog:start]
|
|
12.2. event_route[dialog:end]
|
|
12.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 benefit from the proxy's awareness of
|
|
"calls", 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 could be used directly from the configuration route
|
|
script.
|
|
|
|
This module also provides a foundational API 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 request, the flag
|
|
“dlg_flag” (Section 6.4, “dlg_flag (integer)”) must be set 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
|
|
|
|
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 user; they can come from 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. dlg_extra_hdrs (string)
|
|
6.8. dlg_match_mode (integer)
|
|
6.9. detect_spirals (integer)
|
|
6.10. db_url (string)
|
|
6.11. db_mode (integer)
|
|
6.12. db_update_period (integer)
|
|
6.13. db_fetch_rows (integer)
|
|
6.14. db_skip_load (integer)
|
|
6.15. table_name (string)
|
|
6.16. call_id_column (string)
|
|
6.17. from_uri_column (string)
|
|
6.18. from_tag_column (string)
|
|
6.19. to_uri_column (string)
|
|
6.20. to_tag_column (string)
|
|
6.21. from_cseq_column (string)
|
|
6.22. to_cseq_column (string)
|
|
6.23. from_route_column (string)
|
|
6.24. to_route_column (string)
|
|
6.25. from_contact_column (string)
|
|
6.26. to_contact_column (string)
|
|
6.27. from_sock_column (string)
|
|
6.28. to_sock_column (string)
|
|
6.29. h_id_column (string)
|
|
6.30. h_entry_column (string)
|
|
6.31. state_column (string)
|
|
6.32. start_time_column (string)
|
|
6.33. timeout_column (string)
|
|
6.34. sflags_column (string)
|
|
6.35. toroute_column (string)
|
|
6.36. vars_table_name (string)
|
|
6.37. vars_h_id_column (string)
|
|
6.38. vars_h_entry_column (string)
|
|
6.39. vars_key_column (string)
|
|
6.40. vars_value_column (string)
|
|
6.41. profiles_with_value (string)
|
|
6.42. profiles_no_value (string)
|
|
6.43. bridge_controller (string)
|
|
6.44. bridge_contact (string)
|
|
6.45. initial_cbs_inscript (int)
|
|
6.46. send_bye (int)
|
|
6.47. wait_ack (int)
|
|
6.48. ka_timer (int)
|
|
6.49. ka_interval (int)
|
|
6.50. timeout_noreset (int)
|
|
6.51. timer_procs (int)
|
|
6.52. track_cseq_updates (int)
|
|
6.53. lreq_callee_headers (string)
|
|
|
|
6.1. enable_stats (integer)
|
|
|
|
If statistics support should be enabled or not. Via statistics
|
|
variables, the module provide 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 dialogs' 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)
|
|
|
|
Flag to be used for marking if a dialog should be constructed for the
|
|
current request (this make sense only for initial requests).
|
|
|
|
Default value is “none”.
|
|
|
|
Example 1.4. Set dlg_flag parameter
|
|
...
|
|
modparam("dialog", "dlg_flag", 4)
|
|
...
|
|
|
|
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.5. 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.6. Set default_timeout parameter
|
|
...
|
|
modparam("dialog", "default_timeout", 21600)
|
|
...
|
|
|
|
6.7. 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.7. Set dlf_extra_hdrs parameter
|
|
...
|
|
modparam("dialog", "dlg_extra_hdrs", "Hint: credit expired\r\n")
|
|
...
|
|
|
|
6.8. 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.8. Set dlg_match_mode parameter
|
|
...
|
|
modparam("dialog", "dlg_match_mode", 1)
|
|
...
|
|
|
|
6.9. 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.9. Set detect_spirals parameter
|
|
...
|
|
modparam("dialog", "detect_spirals", 1)
|
|
...
|
|
|
|
6.10. db_url (string)
|
|
|
|
If you want to store the information about the dialogs in a database, a
|
|
database URL must be specified.
|
|
|
|
Default value is “mysql://kamailio:kamailiorw@localhost/kamailio”.
|
|
|
|
Example 1.10. Set db_url parameter
|
|
...
|
|
modparam("dialog", "db_url", "dbdriver://username:password@dbhost/dbname")
|
|
...
|
|
|
|
6.11. 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 immediatly.
|
|
* 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.11. Set db_mode parameter
|
|
...
|
|
modparam("dialog", "db_mode", 1)
|
|
...
|
|
|
|
6.12. db_update_period (integer)
|
|
|
|
The interval (seconds) at which to update dialogs' information, if you
|
|
chose to store the dialogs' info at a given interval. Too short an
|
|
interval will generate intensive database operations, while an
|
|
excessively long one will miss dialogs with a short lifetime.
|
|
|
|
Default value is “60”.
|
|
|
|
Example 1.12. Set db_update_period parameter
|
|
...
|
|
modparam("dialog", "db_update_period", 120)
|
|
...
|
|
|
|
6.13. 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.13. Set db_fetch_rows parameter
|
|
...
|
|
modparam("dialog", "db_fetch_rows", 500)
|
|
...
|
|
|
|
6.14. db_skip_load (integer)
|
|
|
|
Set db_skip_load to 1, to skip the loading of dialogs from the database
|
|
alltogether.
|
|
|
|
Default value is “0” ( not skipped ).
|
|
|
|
Example 1.14. Set db_skip_load parameter
|
|
...
|
|
modparam("dialog", "db_skip_load", 1)
|
|
...
|
|
|
|
6.15. table_name (string)
|
|
|
|
If you want to store the information about the dialogs in a database a
|
|
table name must be specified.
|
|
|
|
Default value is “dialog”.
|
|
|
|
Example 1.15. Set table_name parameter
|
|
...
|
|
modparam("dialog", "table_name", "my_dialog")
|
|
...
|
|
|
|
6.16. call_id_column (string)
|
|
|
|
The column name in the database to store the dialogs' callid.
|
|
|
|
Default value is “callid”.
|
|
|
|
Example 1.16. Set callid_column parameter
|
|
...
|
|
modparam("dialog", "call_id_column", "callid_c_name")
|
|
...
|
|
|
|
6.17. from_uri_column (string)
|
|
|
|
The column name in the database to store the caller's sip address.
|
|
|
|
Default value is “from_uri”.
|
|
|
|
Example 1.17. Set from_uri_column parameter
|
|
...
|
|
modparam("dialog", "from_uri_column", "from_uri_c_name")
|
|
...
|
|
|
|
6.18. from_tag_column (string)
|
|
|
|
The column name in the database to store the From tag from the INVITE
|
|
request.
|
|
|
|
Default value is “from_tag”.
|
|
|
|
Example 1.18. Set from_tag_column parameter
|
|
...
|
|
modparam("dialog", "from_tag_column", "from_tag_c_name")
|
|
...
|
|
|
|
6.19. to_uri_column (string)
|
|
|
|
The column name in the database to store the callee's sip address.
|
|
|
|
Default value is “to_uri”.
|
|
|
|
Example 1.19. Set to_uri_column parameter
|
|
...
|
|
modparam("dialog", "to_uri_column", "to_uri_c_name")
|
|
...
|
|
|
|
6.20. to_tag_column (string)
|
|
|
|
The column name in the database to store the To tag from the 200 OK
|
|
response to the INVITE request, if present.
|
|
|
|
Default value is “to_tag”.
|
|
|
|
Example 1.20. Set to_tag_column parameter
|
|
...
|
|
modparam("dialog", "to_tag_column", "to_tag_c_name")
|
|
...
|
|
|
|
6.21. from_cseq_column (string)
|
|
|
|
The column name in the database to store the cseq from caller side.
|
|
|
|
Default value is “caller_cseq”.
|
|
|
|
Example 1.21. Set from_cseq_column parameter
|
|
...
|
|
modparam("dialog", "from_cseq_column", "column_name")
|
|
...
|
|
|
|
6.22. to_cseq_column (string)
|
|
|
|
The column name in the database to store the cseq from callee side.
|
|
|
|
Default value is “callee_cseq”.
|
|
|
|
Example 1.22. Set to_cseq_column parameter
|
|
...
|
|
modparam("dialog", "to_cseq_column", "column_name")
|
|
...
|
|
|
|
6.23. 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.23. Set from_route_column parameter
|
|
...
|
|
modparam("dialog", "from_route_column", "column_name")
|
|
...
|
|
|
|
6.24. 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.24. Set to_route_column parameter
|
|
...
|
|
modparam("dialog", "to_route_column", "column_name")
|
|
...
|
|
|
|
6.25. from_contact_column (string)
|
|
|
|
The column name in the database to store the caller's contact uri.
|
|
|
|
Default value is “caller_contact”.
|
|
|
|
Example 1.25. Set from_contact_column parameter
|
|
...
|
|
modparam("dialog", "from_contact_column", "column_name")
|
|
...
|
|
|
|
6.26. to_contact_column (string)
|
|
|
|
The column name in the database to store the callee's contact uri.
|
|
|
|
Default value is “callee_contact”.
|
|
|
|
Example 1.26. Set to_contact_column parameter
|
|
...
|
|
modparam("dialog", "to_contact_column", "column_name")
|
|
...
|
|
|
|
6.27. 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.27. Set from_sock_column parameter
|
|
...
|
|
modparam("dialog", "from_sock_column", "column_name")
|
|
...
|
|
|
|
6.28. 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.28. Set to_sock_column parameter
|
|
...
|
|
modparam("dialog", "to_sock_column", "column_name")
|
|
...
|
|
|
|
6.29. h_id_column (string)
|
|
|
|
The column name in the database to store the dialogs' hash id
|
|
information.
|
|
|
|
Default value is “hash_id”.
|
|
|
|
Example 1.29. Set h_id_column parameter
|
|
...
|
|
modparam("dialog", "h_id_column", "hash_id_c_name")
|
|
...
|
|
|
|
6.30. h_entry_column (string)
|
|
|
|
The column name in the database to store the dialogs' hash entry
|
|
information.
|
|
|
|
Default value is “hash_entry”.
|
|
|
|
Example 1.30. Set h_entry_column parameter
|
|
...
|
|
modparam("dialog", "h_entry_column", "h_entry_c_name")
|
|
...
|
|
|
|
6.31. state_column (string)
|
|
|
|
The column name in the database to store the dialogs' state
|
|
information.
|
|
|
|
Default value is “state”.
|
|
|
|
Example 1.31. Set state_column parameter
|
|
...
|
|
modparam("dialog", "state_column", "state_c_name")
|
|
...
|
|
|
|
6.32. start_time_column (string)
|
|
|
|
The column name in the database to store the dialogs' start time
|
|
information.
|
|
|
|
Default value is “start_time”.
|
|
|
|
Example 1.32. Set start_time_column parameter
|
|
...
|
|
modparam("dialog", "start_time_column", "start_time_c_name")
|
|
...
|
|
|
|
6.33. timeout_column (string)
|
|
|
|
The column name in the database to store the dialogs' timeout.
|
|
|
|
Default value is “timeout”.
|
|
|
|
Example 1.33. Set timeout_column parameter
|
|
...
|
|
modparam("dialog", "timeout_column", "timeout_c_name")
|
|
...
|
|
|
|
6.34. sflags_column (string)
|
|
|
|
The column name in the database to store the script flags.
|
|
|
|
Default value is “sflags”.
|
|
|
|
Example 1.34. Set sflags_column parameter
|
|
...
|
|
modparam("dialog", "sflags_column", "s_flags")
|
|
...
|
|
|
|
6.35. toroute_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.35. Set toroute_column parameter
|
|
...
|
|
modparam("dialog", "toroute_column", "timeout_route")
|
|
...
|
|
|
|
6.36. vars_table_name (string)
|
|
|
|
If you want to store the variables for a dialog in a database a table
|
|
name must be specified.
|
|
|
|
Default value is “dialog_vars”.
|
|
|
|
Example 1.36. Set vars_table_name parameter
|
|
...
|
|
modparam("dialog", "vars_table_name", "my_dialog_vars")
|
|
...
|
|
|
|
6.37. vars_h_id_column (string)
|
|
|
|
The column name in the database to store the dialogs' hash id
|
|
information (as a reference to the dialog table).
|
|
|
|
Default value is “hash_id”.
|
|
|
|
Example 1.37. Set vars_h_id_column parameter
|
|
...
|
|
modparam("dialog", "vars_h_id_column", "vars_h_id_name")
|
|
...
|
|
|
|
6.38. vars_h_entry_column (string)
|
|
|
|
The column name in the database to store the dialogs' hash entry
|
|
information (as a reference to the dialog table).
|
|
|
|
Default value is “hash_entry”.
|
|
|
|
Example 1.38. Set vars_h_entry_column parameter
|
|
...
|
|
modparam("dialog", "vars_h_entry_column", "vars_h_entry_name")
|
|
...
|
|
|
|
6.39. vars_key_column (string)
|
|
|
|
The column name in the database to store the keys of a variable.
|
|
|
|
Default value is “dialog_key”.
|
|
|
|
Example 1.39. Set vars_key_column parameter
|
|
...
|
|
modparam("dialog", "vars_key_column", "vars_key_name")
|
|
...
|
|
|
|
6.40. vars_value_column (string)
|
|
|
|
The column name in the database to store the keys of a variable.
|
|
|
|
Default value is “dialog_value”.
|
|
|
|
Example 1.40. Set vars_value_column parameter
|
|
...
|
|
modparam("dialog", "vars_value_column", "vars_value_name")
|
|
...
|
|
|
|
6.41. profiles_with_value (string)
|
|
|
|
List of names for profiles with values.
|
|
|
|
Default value is “empty”.
|
|
|
|
Example 1.41. Set profiles_with_value parameter
|
|
...
|
|
modparam("dialog", "profiles_with_value", "caller ; my_profile")
|
|
...
|
|
|
|
6.42. profiles_no_value (string)
|
|
|
|
List of names for profiles without values.
|
|
|
|
Default value is “empty”.
|
|
|
|
Example 1.42. Set profiles_no_value parameter
|
|
...
|
|
modparam("dialog", "profiles_no_value", "inbound ; outbound")
|
|
...
|
|
|
|
6.43. 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.43. Set bridge_controller parameter
|
|
...
|
|
modparam("dialog", "bridge_controller", "sip:ctd@kamailio.org")
|
|
...
|
|
|
|
6.44. 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.44. Set bridge_contact parameter
|
|
...
|
|
modparam("dialog", "bridge_contact", "sip:ctd@127.0.0.1:5060")
|
|
...
|
|
|
|
6.45. 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.45. Set initial_cbs_inscript parameter
|
|
...
|
|
modparam("dialog", "initial_cbs_inscript", 0)
|
|
...
|
|
|
|
6.46. 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.46. Set send_bye parameter
|
|
...
|
|
modparam("dialog", "send_bye", 1)
|
|
...
|
|
|
|
6.47. wait_ack (int)
|
|
|
|
If set to 1, dialog will be keept 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.47. Set wait_ack parameter
|
|
...
|
|
modparam("dialog", "wait_ack", 0)
|
|
...
|
|
|
|
6.48. 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.48. Set ka_timer parameter
|
|
...
|
|
modparam("dialog", "ka_timer", 10)
|
|
...
|
|
|
|
6.49. 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.49. Set ka_interval parameter
|
|
...
|
|
modparam("dialog", "ka_interval", 300)
|
|
...
|
|
|
|
6.50. 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.50. Set timeout_noreset parameter
|
|
...
|
|
modparam("dialog", "timeout_noreset", 1)
|
|
...
|
|
|
|
6.51. timer_procs (int)
|
|
|
|
If set to 1, the dialog will run own timer process to execute dialog
|
|
timeout tasks.
|
|
|
|
Default value is “0” (use core time process).
|
|
|
|
Example 1.51. Set timer_procs parameter
|
|
...
|
|
modparam("dialog", "timer_procs", 1)
|
|
...
|
|
|
|
6.52. 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.52. Set track_cseq_updates parameter
|
|
...
|
|
modparam("dialog", "track_cseq_updates", 1)
|
|
...
|
|
|
|
6.53. 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.53. Set lreq_callee_headers parameter
|
|
...
|
|
modparam("dialog", "lreq_callee_headers", "TH: dlh\r\n")
|
|
...
|
|
|
|
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. is_known_dlg()
|
|
7.14. dlg_set_timeout(timeout [, h_entry, h_id])
|
|
7.15. dlg_set_timeout_by_profile(profile, [value], timeout)
|
|
7.16. dlg_set_property(attr)
|
|
7.17. dlg_remote_profile(cmd, profile, value, uid, expires)
|
|
|
|
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.54. 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.55. 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
|
|
supports values, the check can be reinforced to take into account a
|
|
specific value, if the dialog was inserted into the profile for 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 be checked against;
|
|
* value (optional) - string value to further restrict the check.
|
|
Pseudo-variables are supported.
|
|
|
|
This function can be used from REQUEST_ROUTE, BRANCH_ROUTE, REPLY_ROUTE
|
|
and FAILURE_ROUTE.
|
|
|
|
Example 1.56. is_in_profile usage
|
|
...
|
|
if (is_in_profile("inbound_call")) {
|
|
log("this request belongs to a 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 membersip 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.57. 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.58. dlg_isflagset usage
|
|
...
|
|
if(dlg_isflagset("1"))
|
|
{
|
|
...
|
|
}
|
|
...
|
|
|
|
7.6. dlg_setflag(flag)
|
|
|
|
Set 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.59. 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.60. dlg_resetflag usage
|
|
...
|
|
redlg_setflag("1");
|
|
...
|
|
|
|
7.8. dlg_bye(side)
|
|
|
|
Send BYE to both parties of a dialog.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* side - where to send the BYE. It can be: 'caller', 'callee', or
|
|
both.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.61. 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.62. 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.63. dlg_manage usage
|
|
...
|
|
modparam("dialog", "default_timeout", 100)
|
|
...
|
|
route {
|
|
...
|
|
if(is_method("INVITE") && !has_totag())
|
|
{
|
|
$dlg_ctx(timeout_route) = 12;
|
|
$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.64. 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.
|
|
|
|
This function can be used from BRANCH_ROUTE, REQUEST_ROUTE,
|
|
ONREPLY_ROUTE and FAILURE_ROUTE.
|
|
|
|
Example 1.65. dlg_get usage
|
|
...
|
|
if(dlg_get("abcdef", "123", "456"))
|
|
{
|
|
dlg_bye("all");
|
|
}
|
|
...
|
|
|
|
7.13. 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.66. is_known_dlg() usage
|
|
...
|
|
if(!uri == myself) {
|
|
if(is_known_dlg()) {
|
|
xlog("Request $rm from $ci is in-dialog\n");
|
|
}
|
|
}
|
|
...
|
|
|
|
7.14. 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 valye if the internal dialog identifier.
|
|
|
|
This function can be used from ANY_ROUTE.
|
|
|
|
Example 1.67. dlg_set_timeout usage
|
|
...
|
|
if(dlg_set_timeout("180", "123", "456"))
|
|
{
|
|
...
|
|
}
|
|
...
|
|
|
|
7.15. 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.68. 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.16. 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.69. dlg_set_property usage
|
|
...
|
|
dlg_set_property("ka-src");
|
|
dlg_set_property("ka-dst");
|
|
dlg_set_property("timeout-noreset");
|
|
...
|
|
|
|
7.17. 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.70. dlg_remote_profile usage
|
|
...
|
|
$var(exp) = 3600 + $Ts;
|
|
dlg_remote_profile("add", "caller", "test", "$sruid", "$var(exp)");
|
|
...
|
|
|
|
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. MI Commands
|
|
|
|
9.1. dlg_list
|
|
9.2. dlg_list_ctx
|
|
9.3. dlg_end_dlg
|
|
9.4. dlg_terminate_dlg
|
|
9.5. profile_get_size
|
|
9.6. profile_list_dlgs
|
|
9.7. dlg_bridge
|
|
|
|
9.1. dlg_list
|
|
|
|
Lists the description of a dialog or of all dialogs (calls). If only
|
|
one dialogs is to be listed, the dialog identifiers are to be passed as
|
|
parameter (callid and fromtag).
|
|
|
|
Name: dlg_list
|
|
|
|
Parameters:
|
|
* callid (optional) - callid if a single dialog to be listed.
|
|
* from_tag (optional, but cannot be present without the callid
|
|
parameter) - from tag (as per initial request) of the dialog to be
|
|
listed. Note that if the from_tag is not specified, only dialogs
|
|
created by a request without a from tag are matched, which will
|
|
only occur with broken clients and is thus a very rare situation.
|
|
|
|
MI FIFO Command Format:
|
|
:dlg_list:_reply_fifo_file_
|
|
_empty_line_
|
|
:dlg_list:_reply_fifo_file_
|
|
abcdrssfrs122444@192.168.1.1
|
|
AAdfeEFF33
|
|
|
|
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
|
|
|
|
Parameters: see “dlg_list”
|
|
|
|
MI FIFO Command Format:
|
|
:dlg_list_ctx:_reply_fifo_file_
|
|
_empty_line_
|
|
|
|
9.3. dlg_end_dlg
|
|
|
|
Terminates a confirmed dialog by sending BYE requests 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 get via the dlg_list MI
|
|
command.
|
|
|
|
Note: Works only for confirmed dialogs.
|
|
|
|
MI FIFO Command Format:
|
|
:dlg_end_dlg:_reply_fifo_file_
|
|
342
|
|
56
|
|
_empty_line_
|
|
|
|
9.4. dlg_terminate_dlg
|
|
|
|
Terminates a singe dialog, identified by a Call-ID.
|
|
|
|
Name: dlg_terminate_dlg
|
|
|
|
Parameters:
|
|
* callid - callid of the dialog to be terminated.
|
|
* from_tag (optional, but cannot be present without the callid
|
|
parameter) - from tag (as per initial request) of the dialog to be
|
|
terminated. Note that if the from_tag is not specified, only
|
|
dialogs created by a request without a from tag are matched, which
|
|
will only occur with broken clients and is thus a very rare
|
|
situation.
|
|
|
|
Note: Works only for confirmed dialogs.
|
|
|
|
MI FIFO Command Format:
|
|
:dlg_terminate_dlg:_reply_fifo_file_
|
|
abcdrssfrs122444@192.168.1.1
|
|
AAdfeEFF33
|
|
|
|
9.5. 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
|
|
supports values, this will be silently discarded.
|
|
|
|
Name: profile_get_size
|
|
|
|
Parameters:
|
|
* profile - name of the profile to get the value for.
|
|
* value (optional)- string value to further restrict the check;
|
|
|
|
MI FIFO Command Format:
|
|
:profile_get_size:_reply_fifo_file_
|
|
inbound_calls
|
|
_empty_line_
|
|
|
|
9.6. profile_list_dlgs
|
|
|
|
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 - 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: profile_list_dlgs
|
|
|
|
Parameters:
|
|
* profile - name of the profile to list the dialog for.
|
|
* value (optional)- string value to further restrict the check;
|
|
|
|
MI FIFO Command Format:
|
|
:profile_list_dlgs:_reply_fifo_file_
|
|
inbound_calls
|
|
_empty_line_
|
|
|
|
9.7. dlg_bridge
|
|
|
|
Bridge two SIP addresses in a call using INVITE(hold)-REFER-BYE
|
|
mechanism.
|
|
|
|
Name: dlg_bridge
|
|
|
|
Parameters:
|
|
* from - SIP address to initiate the call
|
|
* to - SIP address to refer 'from' to
|
|
* op (optional) - outbound proxy SIP address
|
|
|
|
MI FIFO Command Format:
|
|
:dlg_bridge:_reply_fifo_file_
|
|
from
|
|
to
|
|
op
|
|
_empty_line_
|
|
|
|
10. Exported RPC Functions
|
|
|
|
10.1. dlg.list
|
|
10.2. dlg.list_ctx
|
|
10.3. dlg.dlg_list
|
|
10.4. dlg.dlg_list_ctx
|
|
10.5. dlg.end_dlg
|
|
10.6. dlg.profile_get_size
|
|
10.7. dlg.profile_list
|
|
10.8. dlg.bridge_dlg
|
|
|
|
10.1. dlg.list
|
|
|
|
Lists the description of all dialogs (calls).
|
|
|
|
Name: dlg.list
|
|
|
|
RPC Command Format:
|
|
serctl dlg_list
|
|
|
|
10.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:
|
|
serctl dlg.list_ctx
|
|
|
|
10.3. dlg.dlg_list
|
|
|
|
Lists the description of one dialog. The dialog identifiers are to be
|
|
passed as parameter (callid and 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:
|
|
serctl dlg.list abcdrssfrs122444@192.168.1.1 AAdfeEFF33
|
|
|
|
10.4. dlg.dlg_list_ctx
|
|
|
|
The same as the “dlg.list_ctx” 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:
|
|
serctl dlg.list_ctx abcdrssfrs122444@192.168.1.1 AAdfeEFF33
|
|
|
|
10.5. 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 get via the dlg_list RPC
|
|
command.
|
|
|
|
RPC Command Format:
|
|
serctl dlg.end_dlg 342 56
|
|
|
|
10.6. 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:
|
|
serctl dlg.dlg.profile_get_size inbound_calls
|
|
|
|
10.7. 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:
|
|
serctl dlg.profile_list inbound_calls
|
|
|
|
10.8. 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
|
|
|
|
RPC Command Format:
|
|
serctl dlg.list from to op
|
|
|
|
11. Exported pseudo-variables
|
|
|
|
11.1. $DLG_count
|
|
11.2. $DLG_status
|
|
11.3. $DLG_lifetime
|
|
11.4. $dlg(...)
|
|
11.5. $dlg_ctx(...)
|
|
11.6. $dlg_var(key)
|
|
|
|
11.1. $DLG_count
|
|
|
|
Returns the number of current active dialogs (may be confirmed or not).
|
|
|
|
11.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.
|
|
|
|
11.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.
|
|
|
|
11.4. $dlg(...)
|
|
|
|
Access to dialog attributes.
|
|
|
|
11.5. $dlg_ctx(...)
|
|
|
|
Access to dialog context attributes.
|
|
|
|
11.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.
|
|
|
|
12. Event Routes
|
|
|
|
12.1. event_route[dialog:start]
|
|
12.2. event_route[dialog:end]
|
|
12.3. event_route[dialog:failed]
|
|
|
|
12.1. event_route[dialog:start]
|
|
|
|
Executed when 200OK for INVITE is processed.
|
|
|
|
12.2. event_route[dialog:end]
|
|
|
|
Executed when BYE is processed or dialog timed out.
|
|
|
|
12.3. event_route[dialog:failed]
|
|
|
|
Executed when dialog is not completed (+300 reply 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. If maybe
|
|
NULL only for DLGCB_CREATED callback type, which is not a per
|
|
dialog type.
|
|
* int type - types of callbacks; more types may be register for the
|
|
same callback function; only DLGCB_CREATED must be register 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_MI_CONTEXT - called when the mi 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 containg extra headers (full format) to be added
|
|
to the BYE requests of the dialog.
|
|
|
|
Chapter 3. Frequently Asked Questions
|
|
|
|
3.1. What happend 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 happend 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 http://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 -
|
|
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
|
|
* Developer Mailing List -
|
|
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
|
|
|
|
E-mails regarding any stable Kamailio release should be sent to
|
|
<sr-users@lists.sip-router.org> and e-mails regarding development
|
|
versions should be sent to <sr-dev@lists.sip-router.org>.
|
|
|
|
If you want to keep the mail private, send it to
|
|
<sr-users@lists.sip-router.org>.
|
|
|
|
3.4.
|
|
|
|
How can I report a bug?
|
|
|
|
Please follow the guidelines provided at:
|
|
https://github.com/kamailio/kamailio/issues.
|