پرش به مطلب اصلی

Smart API

SmartAPI کامپوننتی نیمه‌تعاملی است که درجهت اجرای ترکیبی از دستورات در سرور استفاده می‌شود. دستورها را ازطریق وب‌‌سرویس دریافت و آنها را به‌ترتیب روی تماس‌‌ها اعمال‌ می‌کند و درصورت ایجاد خطا در یک دستور، اجرای بقیه دستورات نیز متوقف‌ می‌شود. درنظر داشته‌باشید می‌توان برای این کامپوننت‌ چندین خروجی با نام‌‌های متفاوت ایجاد و انتقال تماس به این خروجی‌‌ها را نیز مدیریت کرد.

پارامتر کامپوننت

  • API Address: آدرس وب‌‌سرویس برای دریافت رشته دستورات اجرایی.

پارامتر‌های مسیر‌دهی در کامپوننت

  • Case: شناسه خروجی.توسط تابع Exit (درجواب وب‌سرویس)استفاده‌ می‌شود.
  • Text: نامی است که تنها برای نمایش در ظاهر کامپوننت استفاده‌ می‌شود و‌ می‌توان برای سهولت در دسترسی از آن بهره برد.
هشدار

درصورت بروز خطا در اجرای دستورات و یا عدم دریافت پاسخ صحیح از طرف وب‌‌سرویس، تماس از خروجی e خارج‌ می‌شود.

قالب وب‌‌سرویس

با‌توجه به مقادیر منوی تنظیمات مربوط به API Method & API Version، آدرس وب‌سرویس فراخوانی شده و داده‌های زیر همراه با آن ارسال می‌گردند.

  • src: شماره تماس‌‌گیرنده (Caller یا CID).
  • dst: شماره واردشده (Callee یا DID یا Exten).
  • data: داده‌‌ای که تماس‌‌گیرنده در مسیر تماس وارد کرده است (مثلاً داده‌‌ای که در IVR وارد کرده است).
  • unique_id: شناسه یکتای تماس.
  • app_name: نام کامپوننت جاری.

و در جواب، خروجی زیر را به‌صورت json دریافت‌ می‌کند.

{
"ok": "1",
"commands": "PlayAnnouncement('announce01'); SayNumber(5201); PlayAnnouncement('announce02');"
}

دستور فوق ابتدا فایل صوتی announce01 را پخش‌می‌کند و سپس عدد پنج هزار و دویست‌ویک را می‌خواند و در مرحله آخر فایل صوتی announce02 را پخش‌می‌کند.

توابع SmartAPI

SmartAPI توابع مختلفی دارد که هرکدام کار خاصی را برای شما انجام می‌دهد،در پایین به بررسی هرکدام می‌پردازیم.

PlayAnnouncement

خواندن آوای‌صوتی (فایل صوتی باید قبلا در قسمت آوا‌ها آپلود شده باشد). ورودی تابع، نام آوا یا شناسه آن است (برای شناسه، عبارت :id را قرار دهید).

Format: PlayAnnouncement(<file:string >);

PlayAnnouncement('id:5be6a5f294c28e3f068b4575');

PlayAnnouncement ('filename-nasim');

Playback

آوا‌های پیش‌فرض سرور را اجرا‌ و در ورودی، نام آوا را دریافت‌ می‌کند.

Format: Playback(<default-file-name:string >);

Playback('hello-world');

SayNumber

یک شماره را به‌صورت پیوسته‌ می‌خواند (در مثال زیر‌ می‌خواند: پنج هزار و دویست و یک).

Format: SayNumber(<number:int>);

SayNumber(5201);

SayDigit

یک شماره را به‌صورت رقم‌‌به‌رقم‌ می‌خواند (در مثال زیر‌ می‌خواند: یک، دو، سه، نه).

Format: SayDigit(<number:int>);

SayDigit(1239);

SayDuration

مدت زمان را می‌خواند (در مثال زیر می‌خواند: شش روز و شانزده ساعت و پنجاه و یك ثانیه).

Format: SayDuration(<time:string(d.HH:MM:SS)>);

SayDuration('6.16:0:51');

SayClock

ساعت را می‌خواند (در مثال زیر : دوازده ساعت و چهارده دقیقه و نه ثانیه).

Format: SayClock(<time:string(HH:MM:SS)>);

SayClock('12:14:09');
نکته

ورود ثانیه در این تابع اختیاری می‌باشد.

SayDate

تاریخ را‌ می‌خواند (در مثال زیر می‌خواند: بیست و یک، اردیبهشت، یک هزار و سیصد و نود و پنج).

Format: SayDate(<date:string(YYYY-MM-DD)>, <calendar:string(gregorian/jalali/hijri)>);

SayDate('1395-02-21', 'jalali');

GetData

دریافت عدد از کاربر.

Format: GetData(<file:string>, <timeout:int>, <max-digit:int>);

GetData('filename-please-enter-number', 10, 1);

با استفاده از عبارت :id در ابتدای نام فایل، می‌توان شناسه آوا را وارد كرد.

نکته

برای خواندن چند فایل در تابع GetData، از عملگر & به روش زیر استفاده می شود.

GetData('filename01&filename03&filename03', 10, 1);

MusicOnHold

نام کلاس آوای انتظار و مدت زمان (به ثانیه) پخش آن را دریافت می کند.

Format: MusicOnHold (<class_name:string >, <duration:int >);

MusicOnHold(‘default’, 60);

SetExten

مقدار Exten را اعمال می کند(برای اتصال به داخلی).

Format: SetExten(<exten:string>);

SetExten(‘200’);

SetLimitOnCall

برای تماس بعدی محدودیت زمانی اعمال می‌کند. (پارامتر ورودی به ثانیه می باشد).

Format: SetLimitOnCall(<limit:int>);

SetLimitOnCall(150);

ClearUserData

این دستور داده‌هایی که مراحل قبل در Smart API وارد شده‌اند را پاک می‌کند(برای مثال زمانی که setExten را فرخوانی می‌کنید در مواردی باید این تابع نیز فرخوانی شود).

Exit

انتخاب یكی از مسیرهای خروجی برای خروج از كامپوننت. این تابع همیشه آخرین تابع در اجراست، درنظر داشته باشید بعد از آن تابع دیگری اجرا نخواهد شد و تماس از کامپوننت SmartApi خارج‌ می‌شود. درصورتی‌‌كه case وجود نداشته باشد، اجرا با خطا مواجه می‌شود.

Format: Exit(<case:string>);

Exit('3');

در‌جهت آشنایی بیشتر در بخش مثال‌های کاربردی به بررسی پیاده‌سازی سناریو با استفاده از smartapi می‌پردازیم.