1. saeedpersa
  2. عمومی - ایزابل، الستیکس، فری پی بی اکس ...
  3. شنبه, 26 بهمن 1392
[FONT=tahoma]پروژه ای که دارم روش کارم میکنم ثبت شماره تماس همراه با تاریخوساعت همون لحظس.[/FONT]
[FONT=tahoma]من عملیات زیر رو انجام دادم ولی به مشکل برخوردم:[/FONT]
[FONT=tahoma]
[/FONT]
[FONT=tahoma]dbname: mobile[/FONT]
[FONT=tahoma]Table: user_mobile

mysql> select * from user_mobile;
+----+---------------------+-------------+
| id | date | mobile |
+----+---------------------+-------------+
| 1 | 2014-02-14 16:46:52 | 09132367096 |
| 2 | 2014-02-14 16:47:25 | 09132357777 |
| 3 | 2014-02-14 16:48:12 | 09132357777 |
| 4 | 2014-02-14 16:48:12 | 09132357777 |
| 5 | 2014-02-15 08:44:53 | 09132007777 |
| 6 | 2014-02-15 08:45:25 | 09133347777 |
| 7 | 2014-02-15 09:28:18 | 09133347777 |
| 8 | 2014-02-15 09:28:29 | 09133347777 |
| 9 | 2014-02-15 09:28:29 | 09133347777 |
+----+---------------------+-------------+
9 rows in set (0.00 sec)


[/FONT]

[FONT=tahoma]فیلد id از جنس autonumber هست که خودش اتوماتیک عدد میده[/FONT]
[FONT=tahoma]فیلد تاریخ هم از جنس تاریخ کامل همراه با ساعت و روز هست[/FONT]
[FONT=tahoma]فیلد موبایل رو کراکتر گذاشتم[/FONT]
[FONT=tahoma]
[/FONT]
[FONT=tahoma]با این دستور زیر هم اطلاعات رو دستی وارد میکنم:[/FONT]
[FONT=arial][FONT=tahoma, sans-serif] insert into user_mobile (date,mobile) values (now(),"09132367096";);[/FONT]
[/FONT]
[FONT=arial][FONT=tahoma, sans-serif]
[/FONT][/FONT]
[FONT=tahoma]حالا میخوام اینو در فایل func_odbc.conf وارد کنم :[/FONT]
[FONT=arial][FONT=tahoma, sans-serif][MOBILE][/FONT]
[FONT=tahoma, sans-serif]dsn=asterisk[/FONT]
[FONT=tahoma, sans-serif]writesql=insert into user_mobile (date,mobile) values (now(),${mobile})[/FONT]
[FONT=tahoma]
[/FONT]
[/FONT]
[FONT=tahoma]​اینم هم از dialplan که براش تعریف کردم:[/FONT]
[FONT=tahoma]
[/FONT]
[FONT=arial][FONT=tahoma, sans-serif][office][/FONT]
[FONT=tahoma]exten => 600,1,Playback(mark-student-id)[/FONT]

[FONT=tahoma, sans-serif]exten => 600,n,read(mobile)[/FONT]
[FONT=tahoma, sans-serif]exten => 600,n,NoOp(${ODBC_MOBILE()})[/FONT]
[FONT=tahoma, sans-serif]exten => 600,n,Hangup()[/FONT]
[FONT=tahoma, sans-serif]
[/FONT]
[FONT=tahoma, sans-serif]قاعدتا طبق تحقیقاتی که توی نت داشتم این باید کار کنه ولی با پیغام های زیر مواجه شدم:[/FONT]
[FONT=tahoma, sans-serif]
[/FONT]
[FONT=tahoma, sans-serif]Connected to Asterisk 11.7.0 currently running on srv18903 (pid = 1220)
== Using SIP RTP CoS mark 5
-- Executing [600@office:1] Playback("SIP/payampersa-00000004", "mark-student-id";) in new stack
> 0x7f81d8007340 -- Probation passed - setting RTP source address to **3***.****:8000
-- <SIP/payampersa-00000004> Playing 'mark-student-id.slin' (language 'en')
-- Executing [600@office:2] Read("SIP/payampersa-00000004", "mobile";) in new stack
-- User entered '09132367096'
[COLOR=#ff0000][Feb 15 09:34:05] WARNING[1590][C-0000001d]: func_odbc.c:191 generic_execute: SQL Execute returned an error -1: 42000: [MySQL][ODBC 5.1 Driver][mysqld-5.1.71]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 (185)[/COLOR]
[COLOR=#ff0000][Feb 15 09:34:05] WARNING[1590][C-0000001d]: func_odbc.c:199 generic_execute: SQL Exec Direct failed (-1)![select mobile from user_mobile22 where id = ][/COLOR]
[COLOR=#ff0000][Feb 15 09:34:05] WARNING[1590][C-0000001d]: res_odbc.c:608 ast_odbc_direct_execute: SQL Execute error! Verifying connection to asterisk [asterisk-connector]...[/COLOR]
[COLOR=#ff0000][Feb 15 09:34:05] WARNING[1590][C-0000001d]: func_odbc.c:191 generic_execute: SQL Execute returned an error -1: 42000: [MySQL][ODBC 5.1 Driver][mysqld-5.1.71]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 (185)[/COLOR]
[COLOR=#ff0000][Feb 15 09:34:05] WARNING[1590][C-0000001d]: func_odbc.c:199 generic_execute: SQL Exec Direct failed (-1)![select mobile from user_mobile22 where id = ][/COLOR]
[COLOR=#ff0000][Feb 15 09:34:05] ERROR[1590][C-0000001d]: func_odbc.c:538 acf_odbc_read: Unable to execute query [select mobile from user_mobile22 where id = ][/COLOR]
-- Executing [600@office:3] NoOp("SIP/payampersa-00000004", "";) in new stack
-- Executing [600@office:4] Hangup("SIP/payampersa-00000004", "";) in new stack
== Spawn extension (office, 600, 4) exited non-zero on 'SIP/payampersa-00000004'


[/FONT]
[FONT=tahoma]
[/FONT]
[/FONT]
[FONT=arial][FONT=tahoma, sans-serif] ​اساتید عزیز ممنون میشم راهنماییم کنید و بگید ایراد کار من کجاست...
[/FONT]
[FONT=tahoma, sans-serif]یه چیزه دیگه اینکه میخوام وقتی شماره موبایل وارد شد با وارد کردن دکمه * شماره ثبت بشه[/FONT]
[FONT=tahoma, sans-serif]
[/FONT]
[FONT=tahoma, sans-serif]ممنون میشم بهم بگید[/FONT]
[FONT=tahoma, sans-serif]
[/FONT]
[FONT=tahoma, sans-serif]سپاسگذارم​
درصورتی که نیاز به دسترسی داشتید میدم برام پیغام بزارید[/FONT]
[/FONT]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام،
بهترین کاربرد ODBC استریسک برای درج لاگ فایل های خود استریسک (CDR) در SQLServer است، برای این منظور که شما نوشته اید استفاده نمی شود.
اما برای این کار شما با استفاده از AGI نویسی و یک تکه کد ساده PHP می توانید این کار را انجام دهید.
به نظر من اول دنبال sample ساده AGIو PHP باشید و سپس وقتی توانستید کانال را به PHP پاس بدهید آن وقت در فایل PHP خود هر کاری همچون اتصال و درج در SQL به راحتی امکان پذیر است.
در واقع مراحل شما این گونه می شود.

ارسال کانال از dialplan به AGI و فایل PHP
گرفتن عدد از کاربر در PHP و یا اجرای هر دستور استریسک در فایل خود
اتصال به Sql در فایل php (که فقط مفاهیم برنامه نوسی در پی اچ پی دخیل است)

موفق باشید
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام اساتید گرامی
میشه این کد رو برسی کنید؟!
-----------------------------------------
extension.conf:

[CODE]exten => 700,1,Answer()
exten => 700,n,Wait(1)
exten => 700,n,Read(mobile)
exten => 700,n,AGI(mobile.php)
exten => 700,n,Hangup()[/CODE]
------------------------------------------

------------------------------------------
[CODE]agi-bin/mobile.php:
#!/usr/bin/php -q
<?php
require('phpagi.php');
error_reporting(E_ALL);


$agi = new AGI();
$agi->answer();
if(!mysql_connect('localhost','root','1270514393'))
die('Cannot Connect to Database '.mysql_error());
if(!mysql_select_db('mobile'))
die('Cannot Select Database');
$result = mysql_query('SELECT `mobile` FROM `user_mobile`');
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($mobile = mysql_fetch_assoc($result)) {
//echo $mobile["mobile"];
$agi->say_digits($mobile["mobile"]);
}
mysql_close();
?>[/CODE]
----------------------------------------------------

ولی متاسفانه به نتیجه نرسیدم...
من میخوام شماره موبایل رو از طرف بگیره بعد توی بانک با تاریخ دقیق ذخیره کنه
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
سلام، خوب پیشرفت کردید خوشحالم، به نظر من بهتر است شماره موبایل را در خود AGI بگیرید دقیقا با کد زیر

[CODE] $mm5 = $agi->get_data('beep', 9000, 11);
$mm5 = $mm5['result'];
$agi-> verbose($mm5);
$agi-> say_number($mm5,'1234567');[/CODE]

در این مثال شماره موبایل گرفته می شود و در خط بعد چاپ و در خط بعد از آن برای اطمینان خوانده می شود، فقط برای اینکعه ببینیم به درستی گرفته شده..
این کد را تست کنید تا مطئن بشوید با این می توانید شماره موبایل را بگیرید.
خطوط بعدی دیگر درج آن در دیتا بیس است که در پی اچ پی بینهایت مثال برای آن وجود دارد

موفق باشید
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
ممنونم از شما
خب من چندتا سوال دارم
mm5 // همون متغیری هست که شماره موبایل رو توش میریزه>؟؟؟؟


$result = mysql_query('SELECT `mobile` FROM `user_mobile` (mobile) VALUES ($mm5)'); /// درسته ؟ با این کد میشه توی دیتابیس قرارش داد>
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
آقا دیگه ایشالا این کد درسته...
به این صورته که
شماره موبایل رو از کاربر میگیره و در دیتابیس ذخیره میکنه و برای اطمینان اون شماره موبایل رو میخونه:

[PHP]
#!/usr/bin/php -q
<?php
require('phpagi.php');
error_reporting(E_ALL);


$agi = new AGI();
$agi->answer();
if(!mysql_connect('localhost','root','12*****3'))
die('Cannot Connect to Database '.mysql_error());
if(!mysql_select_db('mobile'))
die('Cannot Select Database');
$mobile = $agi -> get_data('beep',9000,11);


$result = mysql_query('insert into user_mobile (mobile) values('$mobile');
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}


while ($mobile = mysql_fetch_assoc($result)) {
// echo $mobile["mobile"];
$agi->say_digits($mobile["mobile"]);
}
mysql_close();
?>
[/PHP]
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
کدهای php را توی تگ php بنویسید که خوانا باشه.
تاریخ تماس را توی دیتابیس ثبت نکردید
نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
تاریخ به صورت اتوماتیک توی دیتابیس ثبت میشه...
توی دیتابیس فقط کافیه شماره تماس ذخیره بشه

متاسفانه این پیغام رو میده هنگام اجرا در cli


[Feb 24 10:42:00] ERROR[9176][C-00000445]: utils.c:1321 ast_carefulwrite: write() returned error: Broken pipe


نظر
هنوز هیچ نظری ارسال نشده است!
پاسخ پذیرفته شده Pending Moderation
0
رای
بازگشت
دوستان عزیزم من هنوز نتیجه نگرفتم... و واقعا به این کد نیاز دارم...
نظر
هنوز هیچ نظری ارسال نشده است!
  • صفحه :
  • 1


هنوز به این موضوع پاسخی داده نشده است

دسته بندی ها

سیستم های تلفنی کدباز
  1. 107 پست
  2. 0 زیرمجموعه
سیسکو Cisco
  1. 61 پست
  2. 0 زیرمجموعه
سیستم تلفنی FreePBX
  1. 48 پست
  2. 0 زیرمجموعه
شبکه و زیرساخت
  1. 65 پست
  2. 0 زیرمجموعه
تازه واردین دنیای ویپ
  1. 927 پست
  2. 0 زیرمجموعه