[sr-dev] [dialog] Adding more info (variables) to a dialog

Iñaki Baz Castillo ibc at aliax.net
Thu Jul 22 20:23:58 CEST 2010


2010/7/22 Timo Reimann <timo.reimann at 1und1.de>:
> Hey,
>
>
> Iñaki Baz Castillo wrote:
>> 2010/7/21 Timo Reimann <timo.reimann at 1und1.de>:
>>>> In my case when my kamailio handles a call it sets it a "client_name"
>>>> profile which is enough to list/terminate all the calls belonging to
>>>> such client.
>>>> But sometimes I need to terminate those calls with a specific CLI, and
>>>> the CLI is not the From username but a custon PAI inserted by
>>>> Kamailio. This info is not stored with the dialog.
>>>>
>>>> A workaround could be settting the dialog in two profiles: client_name
>>>> and PAI, but I think it's not very elegant.
>>>> Also I think that storing custom variables within each dialog could be
>>>> very useful for other subjects.
>>>>
>>>> Opinions? Thanks.
>>> Have you considered using profiles that are associated to specific
>>> values? I haven't tried them myself but it looks pretty much like what
>>> you seek. Consider exported functions *profile(profile, value), and the
>>> MI function "profile_list_dlgs":
>>
>> Ops, really sorry, in fact I *alreay* use it! and it's a good
>> solution. Sorry, not sure what I was thinking about when asked the
>> question XD
>>
>> However I still think that having custom variables associated to
>> dialogs could be useful for some other cases.
>
> Hmm, not sure if I get you. According to the docs, you can pass
> pseudo-variables to profiles already now. How would the current dialog
> interface need to differ in your opinion?
>
> Could be elaborate a bit please?

Yes, sure:

Actually you can set a dialog into profiles and also set a value for
such profiles. Imagine I want to add a custom header "X-Client-Id:
NNNN" to the BYE depending on a profile value set in for the dialog in
the initial INVITE. Then I must do:

  if is_in_profile("client_id", "1000")
    hf_append("X-Client-Id: 1000\r\n");
  else if is_in_profile("client_id", "1001")
    hf_append("X-Client-Id: 1001\r\n");
  else if is_in_profile("client_id", "1002")
    hf_append("X-Client-Id: 1002\r\n");
  [...]
  end

Do you get the point? There is no way to get all the profiles/values a
dialog belongs to, so in my example (really a stupid example, I know)
I should create a very big "if" statement with all the possible values
in a fixed way (not feasible in most of the real cases).

What I would like is something like:

  # In the initial INVITE after setting the dialog:
  $dlg("client_id") = 1000;

  # When processing the BYE:
  hf_append("X-Client-Id: $dlg("client_id")\r\n");

Do you get the point? :)

Cheers.

-- 
Iñaki Baz Castillo
<ibc at aliax.net>



More information about the sr-dev mailing list