Ok, this seems to work (http://pastebin.com/BS4JY2gn):

Can anyone see anything inappropriate or does this dial plan seems OK?

  <extension name="test-dialplan">
    <condition field="destination_number" expression="^(\+\d{3,20})$" break="never">
      <action application="set" data="dialed_number=$1" inline="true"/>
    </condition>
    <condition field="destination_number" expression="^(\d{3,20})$" break="never">
      <action application="set" data="dialed_number=${country_code}$1" inline="true"/>
    </condition>
    <condition>
      <action application="set" data="user_exists=${user_exists id ${dialed_number} ${domain_name}}" inline="true"/>
    </condition>
    <condition field="${user_exists}" expression="^true$" break="never">
      <action application="set" data="call_timeout=20"/>
      <action application="set" data="hangup_after_bridge=true"/>
      <action application="set" data="continue_on_fail=true"/>
      <action application="bridge" data="user/${dialed_number}@${domain_name}"/>
      <action application="answer"/>
      <action application="sleep" data="1000"/>
      <action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_number}"/>
    </condition>
    <condition field="${user_exists}" expression="^false$" break="never">
      <action application="set" data="effective_caller_id_number=${effective_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${effective_caller_id_number}"/>
      <action application="bridge" data="sofia/gateway/pstn-outbound/${dialed_number}"/>
    </condition>
  </extension>

On Tue, Sep 8, 2015 at 11:20 AM, Michael Nielsen <mic.niel84@gmail.com> wrote:
This is my dialplan so far, where I want to add this functionality (http://pastebin.com/k1hffPBp):

    <condition field="destination_number" expression="^(\+\d{3,20})$">
      <action application="set" data="dialed_number=$1" inline="true"/>
      <action application="export" data="dialed_number=$1" inline="true"/>
    </condition>
    <condition field="destination_number" expression="^(\d{3,20})$">
      <action application="set" data="dialed_number=${country_code}$1" inline="true"/>
      <action application="export" data="dialed_number=${country_code}$1" inline="true"/>
    </condition>
    <condition field="${dialed_number}" IF-USER-EXISTS>
      <action application="set" data="call_timeout=20"/>
      <action application="set" data="hangup_after_bridge=true"/>
      <action application="set" data="continue_on_fail=true"/>
      <action application="bridge" data="user/${dialed_number}@${domain_name}"/>
      <action application="answer"/>
      <action application="sleep" data="1000"/>
      <action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_number}"/>
    </condition>   
    <condition field="${dialed_number}" IF-USER-DO-NOT-EXISTS>
      <action application="set" data="effective_caller_id_number=${effective_caller_id_number}"/>
      <action application="set" data="effective_caller_id_name=${effective_caller_id_number}"/>
      <action application="bridge" data="sofia/gateway/pstn-outbound/${dialed_number}"/>
    </condition>

On Tue, Sep 8, 2015 at 9:32 AM, Michael Nielsen <mic.niel84@gmail.com> wrote:
I would like to check if the called number contains a country code, if not then one should be added.
I've got a variable in my user's XML file called country_code containing +44.

This is my code so far, however, I think the last to conditions overlap:

    <condition field="destination_number" expression="^(\+\d{3,20})$">

      <action application="export" data="dialed_extension=$1"/>

    </condition>

    <condition field="destination_number" expression="^00(\d{3,20})$">

      <action application="export" data="dialed_extension=+$1"/>

    </condition>

    <condition field="destination_number" expression="^(\d{3,20})$">

      <action application="export" data="dialed_extension=${country_code}$1"/>

    </condition>


I would like to change 00 to +, and if no + is on the number then use country_code from the user. If it does contain a +, then just use the dialled number.