การโทรออกจากหน้าเว็บเพื่อให้เข้าสู่ห้อง MeetMe

Asterisk Opensource IP Pbx

การโทรออกจากหน้าเว็บเพื่อให้เข้าสู่ห้อง MeetMe

โพสต์โดย Welcome1 » 03 ต.ค. 2010 00:43

สวัสดีครับ ขณะนี้ผมกำลังพยายามใช้ Asterisk Manager Interface เพื่อโทรออกจากหน้าเว็บ ตอนนี้ผมสามารถทำให้โทรออกจาก SIP to SIP ได้แล้ว โดยใช้การ Originate แต่ปัญหาของผมคือ ผมต้องการให้โทรออกโดยที่ ฝั่งแรกเป็น SIP อีกฝั่งเป็น MeetMe room

ใน code ด้านล่างนี้ ผมต้องการให้ระบบโทรหา SIP/3002 แล้วดึงเข้าห้อง MeetMe เบอ 9000

ปัญหาของผมคือ มันโทรหาที่ SIP/3002 แต่พอกดรับสาย มันก็บอก GoodBuy ไปเลย ไม่ยอมต่อเข้าห้องให้

ผมเช็คแล้วว่า ถ้าต่อไปที่ 9000 โดยกดจาก SoftPhone ตรงๆ มันเข้าห้องได้ปรกติครับ

ผมใช้ Asterisk 1.6 นะครับ ติดตั้งพ่วงมากับ TrixBox

<?

$asterisk_ip = "127.0.0.1";

$socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: root\r\n");
fputs($socket, "Secret: 123456\r\n\r\n");

$wrets=fgets($socket,128);
$wrets.=fgets($socket,128);
$wrets.=fgets($socket,128);

echo "<br />Login<br />".$wrets."<br />";

fputs($socket, "Action: Originate\r\n" );
fputs($socket, "Channel: SIP/3002\r\n" );
fputs($socket, "Exten: 9000\r\n" );
fputs($socket, "Context: default\r\n" );
fputs($socket, "Priority: 1\r\n" );
fputs($socket, "Timeout: 90000\r\n" );
fputs($socket, "Async: yes\r\n\r\n" );

$wrets=fgets($socket,128);


echo "<br />Originate<br />".$wrets."<br />";


?>

ขอความเห็นจากผู้รู้ทีครับ ขอบคุณล่วงหน้ามากๆเลยครับผม
Welcome1
 
โพสต์: 3
ลงทะเบียนเมื่อ: 03 ต.ค. 2010 00:18

Re: การโทรออกจากหน้าเว็บเพื่อให้เข้าสู่ห้อง MeetMe

โพสต์โดย nuiz » 03 ต.ค. 2010 18:37

อืม context ชื่อ default นี่มีจริงๆหรือเปล่าครับ อาจจะต้องแก้ชื่อ context ให้ตรงกับ context ที่ exten => 9000 อยู่

ส่วน exten => 9000 นี่ไม่น่าจะมีปัญหาเพราะเรียกจากเบอร์ Extension อื่นได้ตามปกติ

เอาข้อความใน Asterisk Console มาโพสต์ดูหน่อยครับ ตอนที่เรียก แล้วมีเสียง Goodbye
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7069
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: การโทรออกจากหน้าเว็บเพื่อให้เข้าสู่ห้อง MeetMe

โพสต์โดย Welcome1 » 04 ต.ค. 2010 19:46

ขอบคุณมากครับ สำหรับ comment ผมจำลองเหตุการดังนี้คือ ให้ SIP/3001 โทรเข้าไปที่ห้อง 9000 รอไว้ก่อน จากนั้น ผมจะสั่งโทรจากเว็บไปหา SIP/3002 เพื่อเรียกให้เข้ามาที่ห้อง 9000

ผมใช้ SoftPhone EyeBeam Login เป็น SIP/3001 สั่งโทร ได้ผลใน CLR ดังนี้ครับ

[trixbox1.localdomain ~]# asterisk -r verbose
Asterisk 1.6.0.26-FONCORE-r78, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.6.0.26-FONCORE-r78 currently running on trixbox1 (pid = 2335)
Verbosity is at least 3
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 6
-- Executing [9000@from-internal:1] Answer("SIP/3001-00000000", "") in new stack
-- Executing [9000@from-internal:2] Set("SIP/3001-00000000", "CONFNO=9000") in new stack
-- Executing [9000@from-internal:3] Set("SIP/3001-00000000", "MEETME_EXIT_CONTEXT=my-dynamic-nway-invite") in new stack
-- Executing [9000@from-internal:4] MeetMe("SIP/3001-00000000", "9000,pdMX") in new stack
-- Created MeetMe conference 1023 for conference '9000'
-- <SIP/3001-00000000> Playing 'conf-onlyperson.gsm' (language 'en')
-- Started music on hold, class 'default', on SIP/3001-00000000
-- Stopped music on hold on SIP/3001-00000000
-- Started music on hold, class 'default', on SIP/3001-00000000
trixbox1*CLI>


จากนั้น สั่งงานจากหน้าเว็บ ส่งคำสั่ง Originate ตามโค๊ตที่ผมแสดงตอนแรก ระบบโทรหาเบอร์ SIP/3002 ผมได้กดรับสาย จากนั้นมันก็ say goodbye ไปเลย ใน CLI ได้ผลดังนี้ครับ

[trixbox1.localdomain ~]# asterisk -r verbose
Asterisk 1.6.0.26-FONCORE-r78, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.6.0.26-FONCORE-r78 currently running on trixbox1 (pid = 2335)
Verbosity is at least 3
== Manager 'root' logged on from 127.0.0.1
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 6
== Manager 'root' logged off from 127.0.0.1
== Starting SIP/3002-00000001 at default,9000,1 failed so falling back to exten 's'
-- Executing [s@default:1] Playback("SIP/3002-00000001", "vm-goodbye") in new stack
-- <SIP/3002-00000001> Playing 'vm-goodbye.gsm' (language 'en')
-- Executing [s@default:2] Macro("SIP/3002-00000001", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/3002-00000001", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,4)
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/3002-00000001", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/3002-00000001", "1?theend") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] Hangup("SIP/3002-00000001", "") in new stack
== Spawn extension (macro-hangupcall, s, 9) exited non-zero on 'SIP/3002-00000001' in macro 'hangupcall'
== Spawn extension (default, s, 2) exited non-zero on 'SIP/3002-00000001'
trixbox1*CLI>
Welcome1
 
โพสต์: 3
ลงทะเบียนเมื่อ: 03 ต.ค. 2010 00:18

Re: การโทรออกจากหน้าเว็บเพื่อให้เข้าสู่ห้อง MeetMe

โพสต์โดย Welcome1 » 04 ต.ค. 2010 19:58

เข้ามา update ครับ ในที่สุดผมก็แก้ปัญหาได้แล้วครับ ปัญหาเกิดจาก ext 9000 มันไม่ได้อยู่ที่ default ครับ แต่มันอยู่ที่ context อื่น

...

[ext-meetme]
include => ext-meetme-custom
exten => STARTMEETME,1,MeetMe(${MEETME_ROOMNUM},${MEETME_OPTS},${PIN})
exten => STARTMEETME,n,Hangup
exten => h,1,Hangup
exten => 69001,1,Macro(user-callerid,)
exten => 69001,n,Set(MEETME_ROOMNUM=69001)
exten => 69001,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?USER)
exten => 69001,n,Answer
exten => 69001,n,Wait(1)
exten => 69001,n(USER),Set(MEETME_OPTS=)
exten => 69001,n,Goto(STARTMEETME,1)
exten => 69001,hint,MeetMe:69001
exten => 9000,1,Macro(user-callerid,)
exten => 9000,n,Set(MEETME_ROOMNUM=9000)
exten => 9000,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?USER)
exten => 9000,n,Answer
exten => 9000,n,Wait(1)
exten => 9000,n(USER),Set(MEETME_OPTS=M)
exten => 9000,n,Goto(STARTMEETME,1)
exten => 9000,hint,MeetMe:9000
exten => 9001,1,Macro(user-callerid,)

ตรงนี้ไม่ได้ copy มาหมด เพราะมันยาว ...



ดังนั้น เมื่อผมแก้โค๊ดของผม โดยใส่ context ให้ถูกต้อง ผมก็สามารถทำได้แล้วครับ

<?

$asterisk_ip = "127.0.0.1";

$socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: root\r\n");
fputs($socket, "Secret: 123456\r\n\r\n");

$wrets=fgets($socket,128);
$wrets.=fgets($socket,128);
$wrets.=fgets($socket,128);

echo "<br />Login<br />".$wrets."<br />";

fputs($socket, "Action: Originate\r\n" );
fputs($socket, "Channel: SIP/3002\r\n" );
fputs($socket, "Exten: 9000\r\n" );
fputs($socket, "Context: ext-meetme\r\n" );
fputs($socket, "Priority: 1\r\n" );
fputs($socket, "Timeout: 90000\r\n" );
fputs($socket, "Async: yes\r\n\r\n" );

$wrets=fgets($socket,128);


echo "<br />Originate<br />".$wrets."<br />";


?>


ขอขอบคุณคุณ nuiz ที่ช่วยชี้ทางเรื่อง context ครับ :D
Welcome1
 
โพสต์: 3
ลงทะเบียนเมื่อ: 03 ต.ค. 2010 00:18


ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 7 ท่าน

cron