Rodrigo Ricardo Passos | 27 Feb 01:23 2015
Picon

Problem with intermittent link

Hi Yate,

I trying to understand what happen with Yate when ss7 link stay with 
problem after an interrupted.
I'm using Yate with M2K, and no problem with these scenario, but, when 
one SS7 is interrupted, after a long time, Yate can't establish this SS7 
link and no message is presented, only Normal Alignment and Out Of 
Alignment, was up 21. The link stay intermittent. Up and Down, and to 
solve, yate need to be restarted.

Anyone could give me a help to see where is my error or if exist any 
parameter to put in SS7 Link? A little light to shine my lost soul...

I know if SS7 is paid but, in this moment, and Yate Team can't provide 
that kind of support, even paying.

Best Regards,

Rodrigo R Passos

Bipin Patel | 24 Feb 17:43 2015

no route to call target with regfile and regexroute

hi,

i have a weird issue where yate keeps saying no route to call target, my setup involves regfile and regexroute only, i have put regfile on lowest priority number to give it higher priority and then regexroute, my regfile and regexroute contents are as follows

regfile

[general]
autocreate=yes
auth=50
register=50
route=50
preroute=50
file=registration.txt


regexroute

[priorities]
route=100
preroute=100

[$once]

[$init]

[extra]

[contexts]

[default]
${rtp_forward}possible=;rtp_forward=no
^9997$=return;called=usertom

[check_addr_auth]
.*=-;error=noauth


i have set that any local clients can register to yate using any id/pass, when any registered device calls the number 9997 i want the device with id usertom to ring who is also registered but yate keeps saying no route to target, can any1 tell me whats wrong in this setup?


--
body { font-family: Verdana, sans-serif; font-size: 0.8em; color:#484848; } h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin:0in; margin-bottom:.0001pt; } p.footr { font-family: "Trebuchet MS", Verdana, sans-serif; margin:0in; margin-bottom:.0001pt; } h1 { font-size: 1.2em; } h2, h3 { font-size: 1.1em; } a, a:link, a:visited { color: #2A5685;} a:hover, a:active { color: #c61a1a; } a.wiki-anchor { display: none; } hr { width: 100%; height: 1px; background: #ccc; border: 0; } Regards,
Bipin


Bipin Patel | 24 Feb 11:00 2015

bug in yate with message packets

hi,

i have been trying to use sip message function using yate and it seems there is a bug, when i use xlite to send messages to other clients they work fine but when other clients using csipsimple or microsip etc dialers send a message, yate sends message packets with Content-Type: text/plain twice in it and xlite rejects such packets.

below is a packet from csipsimple to xlite through yate and xlite rejects it with error SIP/2.0 400 Bad Request(Multiple values in single-value header Content-Type)


<sip:INFO> 'udp:192.168.0.11:5060' sending 'MESSAGE sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org:5040;rinstance=d69deb
6ebedef517;transport=udp' 004BD0D0 to 192.168.0.11:5040 [004A4CB0]
------
MESSAGE sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org:5040;rinstance=d69deb6ebedef517;transport=udp SIP/2.0
Max-Forwards: 49
uri: sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org
callid: C8y1cgJTq-slgVaCDx.-te--3XqropDe
from: <sip:trillionss-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>;tag=JfZZajI3c6XGymqejF62KD9Pl8NYhDG-
to: <sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>
accept: text/plain, application/im-iscomposing+xml
user-agent: CSipSimple_GT-I9100-19/r2457
content-type: text/plain
Via: SIP/2.0/UDP 192.168.0.11:5060;rport;branch=z9hG4bK1992484867
Call-ID: 696783888-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org
CSeq: 27 MESSAGE
Allow: ACK, INVITE, BYE, CANCEL, MESSAGE, REGISTER, REFER, OPTIONS, INFO
Content-Type: text/plain
Content-Length: 2

OK------
<sip:INFO> 'udp:192.168.0.11:5060' received 343 bytes SIP message from 192.168.0.11:5040 [004A4CB0]
------
SIP/2.0 400 Bad Request(Multiple values in single-value header Content-Type)
Via: SIP/2.0/UDP 192.168.0.11:5060;rport=5060;branch=z9hG4bK1992484867
To: <sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>;tag=59a7905b
From: <sip:trillionss-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>;tag=JfZZajI3c6XGymqejF62KD9Pl8NYhDG-
Call-ID: 696783888-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org
CSeq: 27 MESSAGE
Content-Length: 0


here is another packet from microsip to csipsimple which works but again the Content-Type: text/plain written twice on line 9 and line 14

MESSAGE sip:trillions-Q0ErXNX1RuZDS7ZSKSg6bg@public.gmane.org:52695;ob SIP/2.0
Max-Forwards: 49
uri: sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org
callid: d0d483d1893a41ee816b84f7279e95e5
from: <sip:trillionss-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>;tag=0d3589cf7b06422ea5e256a4665a4257
to: <sip:trillions-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org>
accept: text/plain, application/im-iscomposing+xml
user-agent: MicroSIP/3.9.7
content-type: text/plain
Via: SIP/2.0/UDP 192.168.0.11:5060;rport;branch=z9hG4bK989149303
Call-ID: 463993432-Q0ErXNX1Ruavx8z5qWLW+Q@public.gmane.org
CSeq: 37 MESSAGE
Allow: ACK, INVITE, BYE, CANCEL, MESSAGE, REGISTER, REFER, OPTIONS, INFO
Content-Type: text/plain
Content-Length: 3

try


--
body { font-family: Verdana, sans-serif; font-size: 0.8em; color:#484848; } h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin:0in; margin-bottom:.0001pt; } p.footr { font-family: "Trebuchet MS", Verdana, sans-serif; margin:0in; margin-bottom:.0001pt; } h1 { font-size: 1.2em; } h2, h3 { font-size: 1.1em; } a, a:link, a:visited { color: #2A5685;} a:hover, a:active { color: #c61a1a; } a.wiki-anchor { display: none; } hr { width: 100%; height: 1px; background: #ccc; border: 0; } Regards,
Bipin


Michael Tremer | 22 Feb 17:16 2015

Initiating outgoing calls with Javascript

Hello *,

we have been using Yate for a long time in the IPFire project for
internal communications. Developers can phone each other and so on. It
is working really great.

Now I would like to add a new feature for us. Yate should be able to
initiate calls by itself to invite people to calls or conferences. This
topic is touched very often on this list, but I could not find a really
proper solution.

Here is what I want to do: We have a web user interface where people can
log on to and click on a "call" button next to a contact in the address
book. Yate should then call the caller. As soon as he or she picks up
the phone, a call to the called party should be executed. This is pretty
standard.

When someone invites somebody else to a conference this should work very
similar: The invited party is called and a short message is played back
saying something along the lines "You have been invited to a conference.
Please hold the line and you will be connected in a moment or hangup."
When the invited party holds the line the call is connected to the
conference after a second or two.

I guess that this is not too complicated stuff but I have not had that
much success. I thought that Javascript would be the best scripting
language to use as it is well integrated in Yate. It just does not come
with the possibility to execute external scripts which is used by the
dialout-scheduler.php and dialout-dialer.php example.

So my question is: Is Javascript suitable for this job? I would really
like to use it so that I do not have one script in PHP, one in Perl, the
next one in Javascript and so on.

This is some of my code so far:

function initiateCall(caller, called) {
	/* Just send a message to some other consumer that
	 * someone has been invited to a call. */
	var m = new Message("call.invite");
	m.caller = caller;
	m.called = called;
	m.dispatch();

	return true;
}

function onCallInvite(msg) {
	Engine.output("Initiating dialout " + msg.caller + " -> " + msg.called);

	Engine.debug("ON CALL INVITE");
	Engine.print_r(msg);

	return true;
}

function onEngineTimer(e) {
	var id;
	var caller;
	var called;
	var ret;

	var m = new Message("database");
	m.account = "postgresql-yate";
	m.query = "SELECT id, caller, called FROM dialout \
		WHERE (not_before IS NULL OR not_before <= NOW())";

	//Engine.debug("Running SQL query: " + m.query);
	if (m.dispatch()) {
		//Engine.debug("Got " + m.rows + " rows");

		for (var i = 0; i < m.rows; i++) {
			id     = m.getResult(i, 0);
			caller = m.getResult(i, 1);
			called = m.getResult(i, 2);

			ret = initiateCall(caller, called);
			if (ret) {
				var m = new Message("database");
				m.account = "postgresql-yate";
				m.query = "DELETE FROM dialout WHERE id = " + id.sqlEscape();
				m.dispatch();
			}
		}
	}
}

Engine.debugName("dialout-scheduler");

// Poll the database every once in a while...
Message.install(onEngineTimer, "engine.timer");

// Handle call.invite messages
Message.install(onCallInvite, "call.invite", 10);

There will be an entry in the database which will start the whole
process. A call.invite message is generated so that I can have other
scripts send the same message and my script will handle them.

So the critical part is the onCallInvite() bit. The PHP example has a
data channel which (I think) is my biggest problem here. If I could use
the Channel.callTo and Channel.callJust methods the rest would be much
easier to implement. In contrast to dialout-{dialer,scheduler}.php I was
trying to implement this all in one script. I tried using dumb channels
and all sorts of things without much success.

So I am reaching out to you and am looking forward to the advice you can
give me to implement this properly.

Thanks,
-Michael
Kulkov Ivan | 21 Feb 08:29 2015
Picon

Cisco AS5350, Yate and SS7


Dear All,

I've configured a cisco as5350 with yate ciscosm module for SS7, but
link didn't came up. my configuration is as bellow:

------------------------------------------
Cisco AS5350 Configuration:
------------------------------------------

as5350-test#show version | i 5350
Cisco IOS Software, 5350 Software (C5350-JK9S-M), Version 12.4(11)T, 
RELEASE SOFTWARE (fc2)
BOOTLDR: 5350 Software (C5350-BOOT-M), Version 12.2(2)XB2, EARLY 
DEPLOYMENT RELEASE SOFTWARE (fc1)
as5350-test uptime is 1 day, 32 minutes
System image file is "flash:c5350-jk9s-mz.124-11.T.bin"
Cisco AS5350 (R7K) processor (revision T) with 262144K/131072K bytes of 
memory.

!
controller E1 3/0
  framing NO-CRC4
  channel-group 0 timeslots 1
  ds0-group 1 timeslots 2-31 type none service mgcp
  extsig mgcp
  guard-timer 10 on-expiry  reject
!
controller E1 3/1
!
controller E1 3/2
!
controller E1 3/3
  framing NO-CRC4
  channel-group 1 timeslots 16
  ds0-group 3 timeslots 1-15,17-31 type none service mgcp
  extsig mgcp
  guard-timer 10 on-expiry  reject
!

!
interface Serial0/1
  no ip address
  no ip route-cache cef
  no ip route-cache
  shutdown
  clock rate 2000000
!
interface Serial3/0:0
  no ip address
!

!
voice-port 3/0:1
!
voice-port 3/3:3
!
mgcp
mgcp call-agent 192.168.107.20 2427 service-type mgcp version 1.0
mgcp dtmf-relay voip codec all mode nte-gw
mgcp modem passthrough voip mode nse
mgcp package-capability dtmf-package
no mgcp timer receive-rtcp
mgcp rtp payload-type nte 101
!
mgcp profile default
!

My config on Yate side:

--------------------
mgcpca.conf
--------------------

[gw span0]
user=S3/DS3-3/1
version=MGCP 1.0
host=192.168.x.x
address=192.168.x.x
offset=1
sigchan=16
voicechans=1-15.17-31
forward_rtp=yes
bearer=alaw

--------------------
ciscosm.conf
--------------------

[as5350-1]
rudp_version=0
remote_host=192.168.x.x
remote_port=4000
local_host=192.168.x.x
local_port=4000

[slt_link0]
session=as5350-1
autostart=yes
printslt=yes

------------------------
ysigchan.conf
------------------------

[isup-link0]
enable=yes
type=ss7-isup
pointcodetype=ITU
pointcode=0-14-1
defaultpointcode=0-14-1
remotepointcode=0-14-0
netindicator=national
router=ss7router
service=5
voice=span0
sls=auto
format=alaw
lockgroup=no
strategy=increment
strategy-restrict=even
numplan=isdn
numtype=national
presentation=allowed
screening=user-provided
userparttest=60
print-messages=yes
print-frames=yes
extended-debug=yes
debuglevel=10,10,10,10,10
ringback=yes
channelsync=60

[ss7router]
type=ss7-router
local=ITU,0-14-1
management=ss7snm
autostart=yes
autoallow=yes
sendupu=yes

[ss7snm]
type=ss7-snm
local=ITU,0-14-1
priority=regular
netindicator=national
changemsgs=yes
changesets=yes
neighbours=yes

[as5350-linkset0]
type=ss7-mtp3
print-messages=yes
extended-debug=yes
netind2pctype=ITU,ITU,ANSI,ITU
netindicator=national
local=ITU,0-14-1
adjacent=ITU,0-14-0
link=slt_link0
checklinks=true
checkfails=true

[as5350-link0]
type=ss7-m2pa
sig=as5350-link0
iid=0
autostart=yes
print-messages=yes
extended-debug=yes

-----------LOGS--------------

Yate engine is initialized and starting up on debian
2015-02-21_10:26:29.818845 <INFO> Creating first message dispatching thread
2015-02-21_10:26:31.592690 <as5350-1:NOTE> Socket state changed: 
RudpDown -> RudpWait
2015-02-21_10:26:31.593398 <as5350-1:NOTE> Socket state changed: 
RudpWait -> RudpUp
2015-02-21_10:26:31.593708 <as5350-1:NOTE> Session state changed: 
Nonoperational -> Operational
2015-02-21_10:26:31.593968 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:26:36.598085 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:26:39.786147 <ss7router:NOTE> Restart of SN complete 
[0x2665220]
2015-02-21_10:26:39.786228 <ss7snm:ALL> 
SS7Management::notify(0x2665228,-1) [0x27387e0]
2015-02-21_10:26:39.786295 <isup-link0/ISUP:INFO> L3 'ss7router' sls=-1 
is not operational. Route is prohibit. Remote User Part is unavailable
2015-02-21_10:26:41.600390 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:26:46.603098 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:26:51.608006 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:26:56.611832 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:01.615178 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:06.619950 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:11.624948 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:16.628429 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:21.633464 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:26.634244 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

2015-02-21_10:27:31.638617 <slt_link0:INFO> Sending PDU message: 
Configuration request
     Data dump: 00 00 80 00 00 01 00 00 00 40 00 00 00 00 00 00
     Protocol Type: 1
     Message ID: 0
     Channel ID: 0

--

-- 
Best Regards, Ivan Kulkov

Bill Simon | 20 Feb 22:29 2015
Picon

nodename variable in register module

I would like to use the nodename variable from the register module but find that it is empty whether I use the variable form of ${nodename} or the function form found in regexroute, $(nodename).

I have tried explicitly setting the node name in yate.conf as well as enabling the clustering module. 

How do I get this information from within register?
Daniel Reurich | 17 Feb 10:43 2015
Picon

Wishlist: Javascript - implement listDirectory.

Hi,

I'm very keen to use the javascript capability in yate to build a 
voicemail application (the php one is rather fragile and missing many 
features like MWI etc).  In order to be able to do this I need the 
ability to list directories.  All the other file API's have been 
implemented, so please also add listDirectory as well.

Many thanks,
	Daniel
--

-- 
Daniel Reurich
Centurion Computer Technology (2005) Ltd (NZ)

Picon

Re: Multiple offsets on a ISUP trunk

Hello,

So, I've been working on this problem and managed to write a patch to allow multiple offsets for each voice link added to the trunk.

Here is how it works:

offset = 0,640
voice = link1,link2

link1 -> CICs from 1 to 31
link2 -> CICs from 641 to 671

If you add any further links to the trunk the CICs are incremented accordingly. Eg:

offset = 0,640
voice = link1,link2,link3
 
link1 -> CICs from 1 to 31
link2 -> CICs from 641 to 671
link3 -> CICs from 673 to 703


I'm attaching the patch in case somebody else needs it.

I'll also be submitting the patch in the bug tracking system.


If I have some free time, I'd like to rework the patch so empty entries also increment the CICs automatically. Eg:

offset = 0,,,640
voice = link1,link2,link3,link4
 
link1 -> CICs from 1 to 31
link2 -> CICs from 33 to 63
link3 -> CICs from 65 to 95
link4 -> CICs from 641 to 671


Best regards,
Andre
Attachment (yate-multiple_offsets.patch): application/octet-stream, 1576 bytes
Rodrigo Ricardo Passos | 23 Apr 14:36 2014
Picon

Get number in SAM

Hi Yate,

How can i get the digit in SAM message after receive an IAM using 
Javascript?

Regards,

Rodrigo

Dana cafe | 2 May 14:50 2014

queue.conf operators configuration

good afternoon,

I am trying to put calls in a queue and redistribute to operators 
(without using a database) but I don't know how to define these operators.

For testing i defined two users in regfile.conf:

[1000]
password=1234

[2000]
password=1234

Then in regexroute.conf I defined:

^100$=queue/test1

Finally test1 is defined  in the queue.conf file :

[channels]
incoming=external/nodata/queue_in.php
outgoing=external/nodata/queue_out.php

[queue test1]
mintime = 100
length= 100
maxout=10
;greeting=
onhold=wave/play/ test.wav
maxcall=10000
;prompt=
;notify
detail=true
single=true
;definition of the operator
${queue} = test1
${required} = 1
${current} = 1
;  ${waiting}
location=127.0.0.1
username=2000
  maxcall = 3000
;  prompt: string: Resource to play to the operator when it answers
enabled=true

using yate client logged as 1000 I call to 100 and the music on hold 
start but the call is not distributed to the user 2000 which is logged 
in another yate client. For sure the configuration of the operator is 
wrong, unfortunatelly I didn't find a useful example in the website and 
in internet.

thank you very much for your valuable help,

Jose

Moritz Orbach | 18 Mar 19:47 2014
Picon

Authentication-check in javascript

Hello all,

is there a javascript equivalent to regexroute's
${username}^$=-;error=noauth

Or more precisely: how can I (on call.route, in javascript)
1) verify that a client is registered in regfile.conf (allowed to make a
   certain call)
2) retrieve the true extension of the client (not based on any headers
   the client can set itself, but based on the registration)

I tried "msg.username", msg.params['username'] and similar properties of
the Message object in the call.route handler, but none of them seemed to
exist.

Best regards
Moritz


Gmane