تماسگیر خودکار در Issabel - قسمت اول

تماسگیر خودکار در Issabel - قسمت اول

برای تماس خودکار در VoIP(استریسک) باید از اکشن originate استفاده کنیم.

از این اکشن در خط فرمان استریسک،  در php ،  C# و دیگر زبان ها می توان استفاده کرد.

برای استفاده از این اکشن در تماس خودکار در php ما با استفاده از برنامه نویسی سوکت به AMI استریسک وصل میشویم.به این صورت که با استفاده از username و password به AMI متصل میشویم.این اطلاعات(یوزر و پسورد) در فایل  manager.conf در مسیر /etc/asterisk/ قرار گرفته است.

در فایل manager.conf میتوانیم مشخص کنیم که چه رنچ  IP بتوانند به AMI متصل شوند.

تنظیمات AMI

قبل شروع کار باید دسترسی لازم به AMI را انجام دهیم.

برای این کار از طریق برنامه WinSCP وارد مسیر /etc/asterisk/ می شویم.

فایل manager.conf را باز می کنیم.

در بخش ابتدایی فایل که کانتکس general قرار دارد تغییراتی نمی دهیم.

بخش بعدی کانتکس admin قرار دارد که یوزرنیم ما می شود.

پسورد AMI در قسمت secret قرار داده می شود.

در قسمت deny اجازه دسترسی به AMI به جز سرور ویپ به دستگاه های دیگر برداشته شده.در این مثال این قسمت با;  بصورت کامنت شده است.

با استفاده از permit میتوانید رنج IP برای دسترسی را مشخص کنید.

asterisk-autodial-2

بعد از انجام تغییرات باید در خط فرمان استریسک manager را ریلود کنید.

بصورت زیر

#reload manager

asterisk-autodial-3

بصورت پیش فرض به جز سرور ، دستگاهی اجازه دسترسی به AMI را ندارد.

نکته مهم: حتما قبل از تغییر این فایل ، یک نسخه پشتیبان از این فایل تهیه کنید زیرا در صورت تغییرات نادرست امکان از کار افتادن بخش  pbx الستیکس یا ایزابل وجود دارد.

نکته:برای تماس خودکار باید یک فایل php بسازید و کد ها زیر را در آن فایل قرار دهید.

با استفاده از دستور fsockopen  یک ارتباط با AMI برقرار می کنیم

شکل کلی دستور بصورت زیر است:

fsockopen(target,port,error,errstr,timeout)

توضیح قسمت ها:

Target: IP سرور VoIP قرار داده شود.

Port:پورت  AMI را وارد می کنیم.(5038)

دو پارامتر بعدی شماره خطا و توضیح خطا در صورت عدم ارتباط است.

پارامتر آخر مدت زمان برای برقراری ارتباط است.

بعد از این مراحل باید به اشاره گر AMI ، Username و پسورد AMI را با دستور fputs بفرستیم.

کل دستور بصورت زیر می شود:

$socket = fsockopen("192.168.1.100","5038", $errno, $errstr);

fputs($socket, "Action: Login\r\n");

fputs($socket, "UserName: admin\r\n");

fputs($socket, "Secret: PASSWORD\r\n");

fputs($socket, "Events: off\r\n\r\n");

و در نهایت و با دستور fgets آن را اجرا می کنیم.

fgets(sockets);

در صورتی که بخواهیم نتیجه اتصال به AMI را بررسی کنیم می توان از تابعی بصورت زیر استفاده کرد:

 $res= get_response($socket);
  echo $res;
 function get_response($socket)
{
  $line="";
  $response="";
  while($line!="\r\n")
  {
    $line=fgets($socket,128);
    $response.=$line;
  }
  return $response;
}

 

با دستور echo هم نتیجه را نشان می دهیم.

 

کل کدهای این بخش به صورت زیر است:

$socket = fsockopen("192.168.1.100","5038", $errno, $errstr);

fputs($socket, "Action: Login\r\n");

fputs($socket, "UserName: admin\r\n");

fputs($socket, "Secret: PASSWORD\r\n");

fputs($socket, "Events: off\r\n\r\n");

$res= get_response($socket);
  echo $res;
 function get_response($socket)
{
  $line="";
  $response="";
  while($line!="\r\n")
  {
    $line=fgets($socket,128);
    $response.=$line;
  }
  return $response;
}

?>

PDF آموزش و کدها در قسمت زیر قرار گرفته اند.

برای اطلاعات بیشتر با شماره 02691002326 در تماس باشید.