[Freeswitch-users] Use Nibblebill with PostgreSQL

igor.potjevlesch at gmail.com igor.potjevlesch at gmail.com
Mon Jan 15 17:50:50 UTC 2018


Ah ok, I didn't know nibble_current_balance.
So with something like that should work, but unfortunately not:

 

<action application="set" data="nibble_account=98"/>

<action application="set" data="nibble_rate=0.0115"/>

<action application="set" data="nibble_minimum=1"/>

<action application="set" data="nibble_rounding=2"/>

<action application="set" data="heartbeat 1"/>

<action application="set" data="nibble_current_balance" inline="true"/>

<condition break="on-true" field="${cond(${nibble_current_balance} <= 0 ? YES : NO)}" expression="^YES$">

                <action application="hangup" data="hangup_cause"/>

</condition>

 

The call is processed whereas balance in DB is equal to 0.

 

De : FreeSWITCH-users [mailto:freeswitch-users-bounces at lists.freeswitch.org] De la part de Madovsky
Envoyé : lundi 15 janvier 2018 17:59
À : 'FreeSWITCH Users Help' <freeswitch-users at lists.freeswitch.org>
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

> I don't understand what is supposed to do the SQL request? I think that, indeed, nibble_balance is not set at the moment of the condition.

 

when you set the nibble account so nibblebill makes the SQL request you set in its config

to populate nibble_current_balance, so if you make a condition with nibble_current_balance just after set nibble_account

so you should set it inline to make the condition available

 

On 1/15/2018 5:29 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

Hello,

 

I'm still stuck with Nibblebill config. Even if the current balance is 0 or negative, the dialplan start the call.

 

Someone would have some examples of config where this behaviour is avoided? Thank you!

 

Regards,

 

Igor.

 

De : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  [mailto:igor.potjevlesch at gmail.com] 
Envoyé : mercredi 10 janvier 2018 15:49
À : 'Madovsky'  <mailto:infos at madovsky.org> <infos at madovsky.org>
Objet : RE: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

This is the log: Action log(INFO ${nibble_balance} is equal or lower than 0)

With or without "set nibble_balance". So I guess that this variable is undefined.

 

De : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  [mailto:igor.potjevlesch at gmail.com] 
Envoyé : mercredi 10 janvier 2018 15:39
À : 'Madovsky' <infos at madovsky.org <mailto:infos at madovsky.org> >
Objet : RE: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

I don't understand what is supposed to do the SQL request? I think that, indeed, nibble_balance is not set at the moment of the condition.

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : mardi 9 janvier 2018 21:24
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

you should remove

<action application="set" data="nibble_balance" inline="true"/>

since when you populate nibble_account it makes automatically the SQL request
and populate nibble_balance.
then don't forget to put all nibble variables on the bridge 
like {nibble_account=${nibble_account},etc.}sofia/xxx

On 1/9/2018 8:14 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

I didn't. What does it mean "inline" in that case?

 

I tried like this and add "inline" on all settings. So, now the dialplan looks like this:

 

                <action application="set" data="nibble_account=1" inline="true"/>

                <action application="set" data="nibble_rate=1" inline="true"/>

                <action application="set" data="nibble_minimum=1" inline="true"/>

                <action application="set" data="nibble_rounding=2" inline="true"/>

                <action application="set" data="nibble_balance" inline="true"/>

                <action application="nibblebill" data="heartbeat 1"/>

                <condition break="on-true" field="${cond(${nibble_balance} <= 0 ? YES : NO)}" expression="^YES$">

                        <action application="log" data="INFO ${nibble_balance} is equal or lower than 0"/>

                </condition>

 

                <action application="bridge" data="{nibble_account=1,nibble_rate=1,nibble_minimum=1,nibble_rounding=2,absolute_codec_string=PCMA,101,sip_invite_domain=$${ext-sip-ip}}sofia/gateway/outbound/0$1"/>

 

The logs are showing the following outputs and the call start:

 

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action set(nibble_account=1) INLINE

8d308628-f555-11e7-9064-df48dc662f2c EXECUTE sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  set(nibble_account=1)

8d308628-f555-11e7-9064-df48dc662f2c 2018-01-09 16:55:44.782489 [DEBUG] mod_dptools.c:1548 SET sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  [nibble_account]=[1]

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action set(nibble_rate=1) INLINE

8d308628-f555-11e7-9064-df48dc662f2c EXECUTE sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  set(nibble_rate=1)

8d308628-f555-11e7-9064-df48dc662f2c 2018-01-09 16:55:44.782489 [DEBUG] mod_dptools.c:1548 SET sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  [nibble_rate]=[1]

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action set(nibble_minimum=1) INLINE

8d308628-f555-11e7-9064-df48dc662f2c EXECUTE sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  set(nibble_minimum=1)

8d308628-f555-11e7-9064-df48dc662f2c 2018-01-09 16:55:44.782489 [DEBUG] mod_dptools.c:1548 SET sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  [nibble_minimum]=[1]

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action set(nibble_rounding=2) INLINE

8d308628-f555-11e7-9064-df48dc662f2c EXECUTE sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  set(nibble_rounding=2)

8d308628-f555-11e7-9064-df48dc662f2c 2018-01-09 16:55:44.782489 [DEBUG] mod_dptools.c:1548 SET sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  [nibble_rounding]=[2]

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action set(nibble_balance) INLINE

8d308628-f555-11e7-9064-df48dc662f2c EXECUTE sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  set(nibble_balance)

8d308628-f555-11e7-9064-df48dc662f2c 2018-01-09 16:55:44.782489 [DEBUG] mod_dptools.c:1548 SET sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  [nibble_balance]=[UNDEF]

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action nibblebill(heartbeat 1)

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action bridge({nibble_account=1,nibble_rate=1,nibble_minimum=1,nibble_rounding=2,absolute_codec_string=PCMA,101,sip_invite_domain=}sofia/gateway/out/0123456789)

8d308628-f555-11e7-9064-df48dc662f2c |--- Dialplan: sofia/client_in/+123456789 at A.B.C.D <mailto:sofia/client_in/+123456789 at A.B.C.D>  Action hangup(hangup_cause)

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : lundi 8 janvier 2018 19:52
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

did you set nibble balance inline="true" before the condition?

also check with log just after you set the var to be sure the SQL return a value

 

On 1/8/2018 10:24 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

I basically tried this:

<condition break="on-true" field="${cond(${nibble_balance} <= 0 ? YES : NO)}" expression="^YES$">

                        <action application="log" data="INFO ${nibble_balance} is equal or lower than 0"/>

                </condition>

 

But I didn't see anything in the logs, the call begin to start.

 

Regards,

 

Igor

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : vendredi 5 janvier 2018 14:44
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

Yes in a nested condition for ex.

this method is more robust that trust nibblebill to do all the job

 

On 1/5/2018 5:33 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

It means that I can test ${nibble_balance} before right?

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 20:31
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

you should make a nested condition before the bridge

and if the balance not good transfer the call to hangup or something else

 

On 1/4/2018 8:03 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

I uncommented this in the config file of nibblebill:

 

<param name="custom_sql_lookup" value="SELECT euros AS nibble_balance FROM solde WHERE customer_id='${nibble_account}'"/>

 

The request is working fine according to the logs, but the call is still placed with the logs:

 

2018-01-04 16:59:07.571051 [DEBUG] mod_nibblebill.c:422 Doing lookup query

[SELECT euros AS nibble_balance FROM solde WHERE customer_id='1']

2018-01-04 16:59:07.571051 [DEBUG] mod_nibblebill.c:430 Retrieved current balance for account 1 (balance = -0.040000)

31fe25c6-f168-11e7-a065-b10720ff818b 2018-01-04 16:59:07.571051 [DEBUG] mod_nibblebill.c:523 Comparing -0.040000 to hangup balance of 1.000000, taking into account minimum charge of 1.000000

31fe25c6-f168-11e7-a065-b10720ff818b 2018-01-04 16:59:07.571051 [DEBUG] mod_nibblebill.c:526 Balance of -0.040000 fell below allowed amount of 1.000000! (Account 1)

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 16:37
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

add an sql request into nibblebill and link it to nibble_balance variables inline in diaplan

 

On 1/4/2018 7:35 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

Yes, why not, but I don't find how to check the balance before a bridge.

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 16:29
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

it starts because you don't have any user linked to your nibble_account

so the only way to not start the call is to create a condition with the nibble balance before

the bridge

 

On 1/4/2018 7:22 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

I did this:

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1/+4425482090 at A.B.C.D <mailto:sofia/trunk1/+4425482090 at A.B.C.D>  Action set(nibble_account=1)

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1 /+4425482090 at A.B.C.D <mailto:/+4425482090 at A.B.C.D>  Action set(nibble_rate=1)

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1/+4425482090 at A.B.C.D <mailto:sofia/trunk1/+4425482090 at A.B.C.D>  Action set(nibble_minimum=1)

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1/+4425482090 at A.B.C.D <mailto:sofia/trunk1/+4425482090 at A.B.C.D>  Action set(nibble_rounding=2)

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1/+4425482090 at A.B.C.D <mailto:sofia/trunk1/+4425482090 at A.B.C.D>  Action nibblebill(heartbeat 1)

dca705f8-f161-11e7-9f81-b10720ff818b |--- Dialplan: sofia/trunk1/+4425482090 at A.B.C.D <mailto:sofia/trunk1/+4425482090 at A.B.C.D>  Action bridge({nibble_account=1,nibble_rate=1,nibble_minimum=1,nibble_rounding=2,absolute_codec_string=PCMA,101,sip_invite_domain=}sofia/gateway/out_1/0123456789)

[…]

2018-01-04 16:13:47.410971 [DEBUG] mod_nibblebill.c:430 Retrieved current balance for account 1 (balance = 0.000000)

dca7b05c-f161-11e7-9f9a-b10720ff818b 2018-01-04 16:13:47.410971 [DEBUG] mod_nibblebill.c:523 Comparing 0.000000 to hangup balance of 1.000000, taking into account minimum charge of 1.000000

dca7b05c-f161-11e7-9f9a-b10720ff818b 2018-01-04 16:13:47.410971 [DEBUG] mod_nibblebill.c:526 Balance of 0.000000 fell below allowed amount of 1.000000! (Account 1)

 

But the call still starts. 

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 16:09
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

the nibblebill variables must be on the bridge like

<action application="bridge" data="{nibble_account=1,nibble_rate=1,etc....absolute_codec_string=PCMA,101,sip_invite_domain=$${ext-sip-ip}}sofia/gateway/out_01/0$1"/>

do not use "export" since I noticed some strange behavior with it.
I don't know how nibblebill behaves without a nibble_account linked to a user account,
so I cannot help for this case

On 1/4/2018 7:06 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

I don't have a registered user. It's a peer trusted by his IP address.

During the call the credit is updated every seconds but even without credit, the call start and stop immediately.

 

Yes I know. I will switch to more reasonable value after my tests. 

 

What do you mean by "export all nibblebill variables to the bridge"?

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 15:52
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

> <action application="set" data="nibble_account=1"/>

is 1 a valid nibble_account of a registered user?

> <action application="nibblebill" data="check"/>

you dont' need to check, as nibblebill automatically check the balance

if the nibble_account is linked to a registered user

> <action application="nibblebill" data="heartbeat 1"/>

be aware that heartbeat to 1 means a request to your DB every second

about your issue you should export all nibblebill variables to the bridge too

 

On 1/4/2018 6:46 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

That's the case:

            <condition break="on-true" expression="^\+44([1-9][0-9]{8})$" field="destination_number">

                <action application="set" data="nibble_account=1"/>

                <action application="nibblebill" data="check"/>

                <action application="set" data="nibble_rate=1"/>

                <action application="set" data="nibble_minimum=1"/>

                <action application="set" data="nibble_rounding=2"/>

                <action application="nibblebill" data="heartbeat 1"/>

                <action application="bridge" data="{absolute_codec_string=PCMA,101,sip_invite_domain=$${ext-sip-ip}}sofia/gateway/out_01/0$1"/>

                <action application="hangup" data="hangup_cause"/>

            </condition>

 

De : Madovsky [mailto:infos at madovsky.org] 
Envoyé : jeudi 4 janvier 2018 12:41
À : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

you must check or set nibble_account before the call

On 1/4/2018 3:35 AM, igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  wrote:

Hello,

 

Finally the billing works good. Would it be possible to setup the rates in db? I don't find example or documentation related to this.

 

Also, I don't understand why the call is allowed for bridging whereas the balance is 0 or negative?

 

Regards,

 

Igor.

 

De : igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com>  [mailto:igor.potjevlesch at gmail.com] 
Envoyé : jeudi 4 janvier 2018 10:19
À : 'FreeSWITCH Users Help'  <mailto:freeswitch-users at lists.freeswitch.org> <freeswitch-users at lists.freeswitch.org>
Objet : RE: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

Hello,


Thank you!

Both db_dsn and odbc-dsn work. db-dsn fails.

I keep the version with odbc-dsn because in that case I don't have the warning about deprecated function for versions earlier than 1.4.2 even if I run 1.6.

 

What is the best according to you? db_dsn or odbc-dsn?

 

I have additional questions related to nibble:

1.	After hanging up the call, I see in the logs the good value: "mod_nibblebill.c:590 Billing $0.000234" but some line after there is another update: "mod_nibblebill.c:622 Rounding to precision 1.000000, total 1.000000 (0.999793 excess)". So the call is billed 1 instead of 0.000234. 
2.	Is it possible to setup in the db scheme different prefixes and their rate? Instead of putting them raw in the dialplan or any other config file?

 

Thank you in advance for your clarification.

Regards,

 

Igor.

 

De : FreeSWITCH-users [mailto:freeswitch-users-bounces at lists.freeswitch.org] De la part de Madovsky
Envoyé : mercredi 3 janvier 2018 22:18
À : freeswitch-users at lists.freeswitch.org <mailto:freeswitch-users at lists.freeswitch.org> 
Objet : Re: [Freeswitch-users] Use Nibblebill with PostgreSQL

 

If you compiled FS with --enable-core-odbc-support so you can use

<param name="odbc-dsn" value="pgsql://hostaddr=xx.xx.xx.xx port=xxxx dbname=xxx user=xxx password='xxxx' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />

you must set odbc.ini

On 1/3/2018 1:02 PM, Geoff Mina wrote:

I think the param is db-dsn. Not the underscore version. 


On Jan 3, 2018, at 12:59 PM, Sergey Safarov <s.safarov at gmail.com <mailto:s.safarov at gmail.com> > wrote:

I used connection string

 <param name="db_dsn" value="pgsql://hostaddr=127.0.0.1 dbname=******* user=******* password=*******"/>

Sergey

 

ср, 3 янв. 2018 г. в 22:06, <igor.potjevlesch at gmail.com <mailto:igor.potjevlesch at gmail.com> >:

Hello !

 

I try to connect Nibblebill directly to PostgreSQL but it still fails.

I follow the documentation and setup the param like this: <param name="odbc_dsn" value="pgsql://A.B.C.D dbname=prepaid user=prepaid password=<hidden>"/>

 

When I hangup a call, the logs report the following: 52c8b77c-f0b8-11e7-8d19-5566a3fb77f6 2018-01-03 20:00:19.037333 [CRIT] mod_nibblebill.c:604 Failed to log to database!

 

Any idea on how to proceed with FS 1.6? Thank you!

 

Regards,

 

Igor.

 

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting at freeswitch.org <mailto:consulting at freeswitch.org> 
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org <mailto:FreeSWITCH-users at lists.freeswitch.org> 
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org

_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting at freeswitch.org <mailto:consulting at freeswitch.org> 
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org <mailto:FreeSWITCH-users at lists.freeswitch.org> 
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org













_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting at freeswitch.org <mailto:consulting at freeswitch.org> 
http://www.freeswitchsolutions.com
 
Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com
 
FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org <mailto:FreeSWITCH-users at lists.freeswitch.org> 
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org

 













_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting at freeswitch.org <mailto:consulting at freeswitch.org> 
http://www.freeswitchsolutions.com
 
Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com
 
FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org <mailto:FreeSWITCH-users at lists.freeswitch.org> 
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org

 

 

 

 

 

 

 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20180115/381212ad/attachment-0001.html>


More information about the FreeSWITCH-users mailing list