آموزش ساخت ربات سروش پلاس

آموزش ساخت ربات سروش پلاس

راهنمای استفاده از مستربات سروش پلاس

ارایه خدمات ارزش افزوده و سرویس‌های متنوع بر بستر پیام‌رسان سروش پلاس در جذاب‌تر شدن این پیام‌رسان، تأثیر چشمگیری دارد.
این مهم تنها با کمک توسعه‌دهندگان عزیز صورت خواهد پذیرفت. از این‌رو بستر توسعه سروش پلاس را با استفاده از «مستر بات سروش پلاس» برای شما علاقمندان فراهم آوردیم تا در کنار هم خدمات متنوعی را برای کاربران سروش پلاس فراهم کنیم.
در ادامه می‌توانید از راهنمای ساخت ربات سروش پلاس استفاده نمایید.

 

 

امکانات بات سروش :

در بات سروش پلاس شما توسعه دهنده ی عزیز میتوانید انواع پیام را که در لیست زیر موجود میباشد را به کاربران خود ارسال کنید.ساخت ربات سروش پلاس :

  • متن
  • عکس
  • فیلم
  • صدا
  • عکس متحرک
  • صدای ضبط شده
  • موقعیت جغرافیایی
  • و تمامی فرمتهای مجاز در سرور سروش پلاس

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

ساخت ربات سروش پلاس را در ادامه به شما آموزش خواهیم داد

 

 

قدم اول :

در این بخش شما توسعه‌دهنده عزیز می‌توانید نحوه ساخت بات در سروش پلاس را به سادگی آموزش ببینید.

در قدم اول با عضویت در پیام‌رسان سروش پلاس و مراجعه به ربات مدیریت بات‌ها به آدرس mrbot@ مراحل پیاده‌سازی بات خود را آغاز خواهید کرد.

  1. انتخاب گزینه‌ی ایجاد بات و ثبت شناسه‌ی بات. رعایت موارد بشرح ذیل ضروری‌ست:
    • حداقل تعداد حروف هر شناسه می‌بایست ۳ حرف باشد.
    • حروف استفاده شده می‌بایست انگلیسی باشد.
    • نام انتخابی می‌بایست یکتا باشد که در زمان انتخاب نام در «مستر بات» این مورد در لحظه بررسی شده و نتیجه به شما اطلاع داده خواهد شد.
  2. دریافت توکن و ذخیره‌ی آن
  3. ثبت اطلاعات بات که شامل، نام نمایشی بات، پیام آغازین، اطلاعات پروفایل بات و عکس بات می‌باشد.

 

 

دریافت پیام کاربران :

توسعه‌دهندگان برای برقراری ارتباط و دریافت پیام‌های کاربران می‌بایست به این طریق ارتباط خود را برقرار کنند:

مقدار TOKEN در ابتدای ثبت نام بات به شما داده شده است.
تفاوت نسخه ی شماره ۲ getMessage نسبت به نسخه ی ۱ آن در متد ارسال پیام HEALTH_CHECK میباشد این پیام شما را از وصل بودن بات به سرور مطلع کرده. از همین رو توصیه میشود از نسخه ی ۲ getMessage برای دریافت پیام استفاده کنید. توضیحات کاملتر این پیام در بخش ‘ اجزای پیام کاربران بات ‘ قابل مشاهده است.

 

 

اتصال به بات سروش برای دریافت پیام :

نوع ارتباط از استاندارد (Server Sent Events (SSE پشتیبانی می‌کند، که در آن پس از برقراری اتصال با سرور بات، که آدرس آن در بالا آورده شد، ارتباط به صورت زنده باقی می‌ماند و پیام‌های دریافتی بات شما بر روی همین اتصال برای شما ارسال می‌شود. توجه داشته باشید که برای دریافت پیام نیازی به ارسال مجدد درخواست getMessage مانند روش long polling نبوده و در اولین تلاش برای دریافت پیام آن اتصال قطع نخواهد شد و پیام ها یک به یک به دست شما خواهد رسید. از مزیت روش SSE نسبت به روش قدیمی تر webhook میتوان به این موضوع اشاره کرد که شما دیگر برای دریافت پیام نیازی به داشتن آدرس معتبر نداشته و میتوانید فقط با اتصال به اینترنت پیام های خود را دریافت کرده و به آنها پاسخ دهید. توسعه دهندگان می‌بایست در زمان برقراری ارتباط یکی از دو مقدار زیر را در HTTP HEADER درخواست قرار دهند.

نمونه‌ی اول:

نمونه‌ی دوم:

نمونه درخواست getMessage با استفاده از curl:

نمونه درخواست با استفاده از openssl:

نمونه درخواست با استفاده از کتابخانه‌ی PHP:

نمونه درخواست با استفاده از کتابخانه ی Python:

 

 

 

اجزای پیام کاربران به بات :

پیام ارسال شده به سمت شما در قالب JSON بوده و شامل موارد زیر می‌باشد که هرکدام به اختصار در جدول زیر توضیح داده شده است.

جدول ۱: همه فیلدهایی که در پیام کلاینت به بات ممکن است موجود باشد

  توضیحات اجباری نوع نام
۱ ادرس فرستنده‌ی پیام true String from
۲ محتوای داده‌ی ارسالی کاربر true String body
۳ نوع محتوای ارسال شده که می‌تواند : START,STOP,TEXT , LOCATION , FILE , HEALTH_CHECK باشد . true Type type
۴ زمان ارسال پیام بر اساس میلی ثانیه از 1970 true String time
۵ شناسه‌ی فایل اپلود شده در سروش پلاس false String fileId
۶ نام فایل اپلود شده false String fileName
۷ نوع فایل اپلود شده که می‌تواندIMAGE , VIDEO,GIF,PUSH_TO_TALK,ATTACHMENT باشد . false fileType fileType
۸ حجم فایل اپلود شده false Double fileSize
۹ ادرس فایل اپلود شده false String fileUrl
۱۰ ادرس عکس بند انگشتی false String thumbnailUrl
۱۱ میزان سایز عرض عکس false Double imageWidth
۱۲ میزان سایز طول عکس false Double imageHeight
۱۳ زمان ویدیو false Double fileDuration
۱۴ میزان سایز عرض عکس بند انگشتی false Double thumbnailWidth
۱۵ میزان سایز طول عکس بند انگشتی false Double thumbnailHeight
۱۶ نام مخاطب ارسال شده false String nickName
۱۷ ادرس عکس مخاطب ارسال شده false String avatarUrl
۱۸ شماره‌ی تلفن مخاطب ارسال شده false Double phoneNo
۱۹ عرض جغرافیایی false Double latitude
۲۰ طول جغرافیایی false Double longitude

نوع پیام (فیلد TYPE): محتوای ارسالی در این فیلد از نوع String بوده و می‌تواند یکی از مقادیر زیر باشد.

  • START: پیام آغاز به کار بات، که در زمان زدن دکمه ی شروع در صفحه ی بات به شما ارسال میشود.
  • STOP: پیام متوقف کردن بات، که در زمان زدن دکمه ی متوقف کردن بات به شما ارسال میشود.
  • TEXT: فقط شامل پیام متنی است. فیلد body حتما دارای مقدار است .
  • FILE: شامل فایل می‌باشد. فیلد‌های مربوط به فایل حتما دارای مقدار هستند و فیلد body نیز در صورت کپشن‌دار بودن فایل ارسال می‌شود.
  • LOCATION: شامل موقعیت جغرافیایی می‌باشد .
  • HEALTH_CHECK: پیام اطلاع از وصل بودن بات شما به سرور که هر ۵ دقیقه یکبار برای شما ارسال میشود. (در صورت عدم دریافت این پیام در زمانی بیش از ۵ دقیقه شما میبایست ارتباط خود با سرور را برای دریافت پیام مجددا وصل کنید)

نوع فایل (فیلد FileType): محتوای فایل ارسالی از نوع String بوده و می‌تواند یکی از نوع‌های زیر می‌تواند باشد:

  • IMAGE: تصویر
  • GIF: تصویر متحرک
  • VIDEO: فیلم
  • PUSH_TO_TALK: صدا (ویس)
  • CONTACT: مخاطب
  • ATTACHMENT: تمامی فایل‌هایی که جزو موارد بالا نباشند.

نوع پیام متنی (TYPE: START)

در صورتی که داده ی START در متغیر TYPE باشد، موارد زیر دارای مقدار می‌باشند.

جدول ۲: اجزای پیام، اگر پیام از نوع START باشد

  نمونه نوع داده داده
۱ user String from
۲ ” “ String body
۳ ” 1505744054437″ String time
۴ START TYPE type

مثال

 

نوع پیام متنی (TYPE: STOP)

در صورتی که داده ی STOP در متغیر TYPE باشد، موارد زیر دارای مقدار می‌باشند.

جدول ۲: اجزای پیام، اگر پیام از نوع STOP باشد

  نمونه نوع داده داده
۱ user String from
۲ ” “ String body
۳ ” 1505744054437″ String time
۴ STOP TYPE type

مثال

 

نوع پیام متنی (TYPE: HEALTH_CHECK)

در صورتی که داده ی HEALTH_CHECK در متغیر TYPE باشد، موارد زیر حتما دارای مقدار می‌باشند.

نوع پیام متنی (TYPE: TEXT)

در صورتی که داده ی TEXT در متغیر TYPE باشد، موارد زیر دارای مقدار می‌باشند.

جدول 2: اجزای پیام، اگر پیام از نوع HEALTH_CHECK باشد

  نمونه نوع داده داده
۱ MrBot String from
۲ ” 1505744054437″ String time
۳ HEALTH_CHECK TYPE type

مثال

جدول ۲: اجزای پیام، اگر پیام از نوع TEXT باشد

  نمونه نوع داده داده
۱ user String from
۲ ” SALAM “ String body
۳ ” 1505744054437″ String time
۴ TEXT TYPE type

مثال

 

نوع پیام فایل (TYPE: FILE)

در صورتی که داده ی FILE در متغیر TYPE باشد، موارد زیر دارای مقدار می‌باشند.

جدول ۳: اجزای پیام، اگر پیام از نوع FILE باشد

  نمونه نوع داده داده
۱ user String from
۲ “salam” String body
۳ ” 1505744054437″ String time
۴ FILE TEXT , FILE , LOCATION type
۵ “13235694” String fileId
۶ “user” String fileName
۷ IMAGE or VIDEO or … IMAGE , VIDEO , GIF , PUSH_TO_TALK , ATTACHMENT fileType
۸ “http://url” String fileUrl
۹ 123.456 Double fileSize

مقدار fileType می‌تواند به صورت زیر قرار بگیرد:

جدول ۳.۱: اجزای داده‌ی fileType

  نمونه نوع داده داده
۱ image.png (Image files like : (.jpg , .png , .bmp IMAGE
۲ video.mp4 (Video files like : (.mpg , .mp4, .3gp VIDEO
۳ image.gif (Gif images file : (.gif GIF
۴ audio.amr (Recorded sound file like : (.amr, .m4a, .aac PUSH_TO_TALK
۵ text.pdf All file type ATTACHMENT

نوع پیام فایل حاوی عکس (fileType: IMAGE) یا تصویر متحرک (fileType: GIF)

در صورتی که مقدار fileType برابر IMAGE و یا GIF باشد متغیر‌های زیر نیز در کنار متغیر های جدول ۳ شامل مقدار هستند:

جدول ۳.۲: اجزای پیام، اگر فایل از نوع IMAGE یا GIF باشد

  نمونه نوع داده داده
۱ “http://image.png” String thumbnailUrl
۲ 120.2 Double imageWidth
۳ 250.6 Double imageHeight

مثال

 

نوع پیام فایل حاوی ویدئو (fileType: VIDEO)

در صورتی که مقدار fileType برابر VIDEO باشد متغیر‌های زیر نیز در کنار متغیر های جدول ۳ شامل مقدار هستند:

جدول ۳.۳: اجزای پیام، اگر فایل از نوع VIDEO باشد

  نمونه نوع داده داده
۱ 720000 String fileDuration
۲ “http://video.png” String thumbnailUrl
۳ 120.0 Double thumbnailWidth
۴ 250.6 Double thumbnailHeight

مثال

 

نوع پیام فایل حاوی صدای ضبط شده (fileType: PUSH_TO_TALK)

در صورتی که مقدار fileType برابر PUSH_TO_TALK باشد متغیر زیر نیز در کنار متغیر های جدول ۳ شامل مقدار هست:

جدول ۳.۴: اجزای پیام، اگر فایل از نوع PUSH_TO_TALK باشد

  نمونه نوع داده داده
۱ 720000 Double fileDuration

مثال

 

نوع پیام مکان (TYPE: LOCATION)

در صورتی که داده ی LOCATION در متغیر TYPE باشد، موارد زیر دارای مقدار می‌باشند.

جدول ۴: اجزای پیام، اگر پیام از نوع LOCATION باشد

  نمونه نوع داده داده
۱ user String from
۲ ” 1505744054437″ String time
۳ LOCATION LOCATION type
۴ 35.6892 Double latitude
۵ 51.3890 Double longitude

مثال

 

 

 

ارسال پیام بات به کاربران :

توسعه‌دهندگان برای ارسال پیام به کاربران می‌بایست به این طریق ارتباط خود را برقرار کنند:

مقدار TOKEN در ابتدای ثبت نام بات به شما داده شده است.

در صورت موفقیت‌آمیز بودن مقدار http status برگشتی 200 می‌باشد.

توسعه‌دهندگان می‌‌توانند در زمان برقراری ارتباط در HEADER HTTP مشخص کنند که نوع داده‌ی ارسالی به چه صورتی باشد. نوع داده می‌تواند به صورت XML یا JSON باشد. برای استفاده شما می‌بایست به صورت زیر اقدام کنید:

نمونه درخواست ارسال پیام با استفاده از curl:

 

 

 

اجزای پیام بات به کاربران برای ساخت ربات سروش پلاس :

  • نوع پیام متنی (TYPE: TEXT)
  • نوع پیام فایل (TYPE: FILE)
    • نوع پیام فایل حاوی عکس (fileType: IMAGE) یا تصویر متحرک (fileType: GIF)
    • نوع پیام فایل حاوی ویدئو (fileType: VIDEO)
    • نوع پیام فایل حاوی صدای ضبط شده (fileType: PUSH_TO_TALK)
  • نوع پیام تغییر کیبورد (TYPE: CHANGE)
  • کیبورد سفارشی (CUSTOM KEYBOARD)
    • کلاس CustomKey

پیام ارسال شده از سمت شما باید در قالب JSON باشد و شامل بخشی از موارد زیر می‌باشد که هرکدام به اختصار در جدول زیر توضیح داده شده است.

جدول ۵: همه فیلدهایی که در پیام بات به کلاینت ممکن است موجود باشد.

  توضیحات اجباری نوع نام
۱ آدرس گیرنده ی پیام true String to
۲ محتوای داده ی ارسالی به کاربر false String body
۳ نوع استفاده محتوای ارسالی که می‌تواند : BOT , CHANNEL باشد. (همچنین برای سازگاری با نسخه های قبل در صورت وجود نداشتن این مقدار، مقدار پیشفرض BOT در نظر گرفته می‌شود) false MajorType majorType
۴ نوع محتوای ارسالی که می‌تواند : TEXT , LOCATION , FILE , KEYBOARD_CHANGE باشد. true Type type
۵ زمان ارسال پیام بر اساس میلی ثانیه از 1970 false String time
۶ نام فایل آپلود شده false String fileName
۷ نوع فایل آپلود شده که می‌تواندIMAGE ,VIDEO,GIF,PUSH_TO_TALK,ATTACHMENT باشد. false FileType fileType
۸ حجم فایل آپلود شده false Double fileSize
۹ ادرس فایل آپلود شده در سرور‌های سروش پلاس false String fileUrl
۱۰ آدرس عکس بند انگشتی false String thumbnailUrl
۱۱ میزان سایز عرض عکس false Double imageWidth
۱۲ میزان سایز طول عکس false Double imageHeight
۱۳ زمان ویدیو false Double fileDuration
۱۴ میزان سایز عرض عکس بند انگشتی false Double thumbnailWidth
۱۵ میزان سایز طول عکس بند انگشتی false Double thumbnailHeight
۱۶ نام مخاطب ارسال شده false String nickName
۱۷ آدرس عکس مخاطب ارسال شده false String avatarUrl
۱۸ شماره ی تلفن مخاطب ارسال شده false Double phoneNo
۱۹ عرض جغرافیایی false Double latitude
۲۰ طول جغرافیایی false Double longitude

ننوع استفاده ی پیام (MAJOR_TYPE: BOT)

برای ارسال پیام به بات نیازی به گذاشتن مقدار majorType نمیباشد ولی در صورت گذاشتن این فیلد مقدار آن باید BOT باشد که می‌باست جدول زیر شامل مقدار باشد :

جدول6: اجزای پیام، اگر پیام از نوع BOT باشد

  نمونه نوع داده داده
۱ user String to
۲ “salam” String body
۳ TEXT TYPE type

مثال

 

نوع استفاده ی پیام (MAJOR_TYPE: CHANNEL)

برای ارسال پیام به کانال شما میبایست مقدار majorType را CHANNEL قرار دهید و در فیلد to نیز لینک کانال را ارسال کنید که می‌باست جدول زیر شامل مقدار باشد :

جدول6: اجزای پیام، اگر پیام از نوع CHANNEL باشد

  نمونه نوع داده داده
۱ channelLink String to
۲ “salam” String body
۳ TEXT TYPE type
۴ CHANNEL MajorType majorType

مثال

 

نوع پیام متنی (TYPE: TEXT)

برای ارسال TEXT می‌بایست جدول زیر شامل مقدار باشد:

جدول۶: اجزای پیام، اگر پیام از نوع TEXTباشد

  نمونه نوع داده داده
۱ user String to
۲ “salam” String body
۳ TEXT TEXT type

مثال

 

نوع پیام فایل (TYPE: FILE)

برای ارسال FILE می‌بایست جدول زیر شامل مقدار باشد:

جدول ۷: اجزای پیام، اگر پیام از نوع FILE باشد

  نمونه نوع داده داده
۱ user String to
۲ “salam” String body
۳ FILE FILE type
۴ “user” String fileName
۵ IMAGE or VIDEO or … IMAGE , VIDEO , GIF , PUSH_TO_TALK , ATTACHMENT fileType
۶ “http://url” String fileUrl
۷ 123.456 Double fileSize

در صورت انتخاب یکی از fileType‌ ها شما می‌بایست جدول مربوط به آن را نیز در کنار جدول ۷ ارسال کنید.

نوع پیام فایل حاوی عکس (fileType: IMAGE) یا تصویر متحرک (fileType: GIF)

جدول ۸: اجزای پیام، اگر فایل از نوع IMAGE یا GIF باشد

  نمونه نوع داده داده
۱ “http://image.png” String thumbnailUrl
۲ 120.2 Double imageWidth
۳ 250.6 Double imageHeight

مثال

 

نوع پیام فایل حاوی ویدئو (fileType: VIDEO)

جدول ۹: اجزای پیام، اگر فایل از نوع VIDEO باشد

  نمونه نوع داده داده
۱ 720000 String fileDuration
۲ “http://video.png” String thumbnailUrl
۳ 120.0 Double thumbnailWidth
۴ 250.6 Double thumbnailHeight

مثال

 

نوع پیام فایل حاوی صدای ضبط شده (fileType: PUSH_TO_TALK)

جدول ۱۰: اجزای پیام، اگر فایل از نوع PUSH_TO_TALK باشد

نمونه نوع داده داده
720000 Double fileDuration

مثال

 

نوع پیام فایل حاوی دیگر فرمت های مجاز (fileType: ATTACHMENT)

جدول ۱۰: اجزای پیام، اگر فایل از نوع PUSH_TO_TALK باشد

مثال

 

نوع پیام مکان (TYPE: LOCATION)

برای ارسال LOCATION می‌بایست جدول زیر شامل مقدار باشد:

جدول ۱۲: اجزای پیام، اگر پیام از نوع LOCATION باشد

  نمونه نوع داده داده
۱ user String to
۲ LOCATION LOCATION type
۳ 35.6892 Double latitude
۴ 51.3890 Double longitude

مثال

 

نوع پیام تغییر کیبورد (TYPE: CHANGE)

برای ارسال KEYBOARD_CHANGE می‌بایست جدول زیر شامل مقدار باشد:

جدول ۱۳: اجزای پیام، اگر پیام از نوع CHANGE باشد

  نمونه نوع داده داده
۱ user String to
۲ CHANGE CHANGE type
۳
[[{"command":"1.1","text": "row 1 , column 1"}, {"command":"1.2",]]>"text": "row 1 , column 2"}]]
آرایه ی دو بعدی از نوع CustomKey keyboard
  • این فیلد زمانی مورد استفاده قرار میگیرد که شما بدون ارسال پیام متنی، فایلی و موقعیت جغرافیایی، قصد تنها تعویض کیبورد را دارید.

مثال

 

کیبورد سفارشی (CUSTOM KEYBOARD)

برای ارسال کیبورد شما می‌بایست در پیام ارسالی به همراه فیلد‌های ذکر شده در جدول ۶، ۷ یا ۱۲ ، فیلد keyboard را نیز قرار دهید.

فیلد کیبورد از نوع JSON بوده و شامل یک آرایه ی دو بعدی از نوع CustomKey می‌باشد. بعد اول شامل سطر و بعد دوم مشخص کننده ی ستون می‌باشد.

جدول 14: اجزای پیام اگر شامل فیلد Keyboard باشد

  نمونه نوع داده داده
۱   keyboard

کلاس CustomKey

این داده نیز از نوع JSON بوده و مشخص کننده ی مقدار نمایشی به کاربر و مقدار بازگردانده شده از سمت کلاینت به بات می‌باشد.

جدول ۱۴.۱: اجزای فیلد CustomKey در keyboard

  نوع داده مقدار وضعیت توضیح
۱ text String Not NULL داده ای که مقدار آن برای کاربر نمایش داده می‌شود .
۲ command String Not NULL داده ای که مقدار آن در صورت کلیک کردن بر روی دکمه ی آن در کلاینت برای شما فرستاده می‌شود.

مثال

نمونه‌ی خروجی مشاهده شده توسط کاربر:

  Row1,column2 Row1,column1
  Row2,column2 Row2,column1
Row3,column3 Row3,column2 Row3,column1
  • نکته ۱: در صورت عدم ارسال فیلد keyboard، در صورت موجود بودن کیبورد در پیام قبلی، همان کیبورد برای پیام جدید شما نیز نمایش داده خواهد شد.
  • نکته ۲: در صورت ارسال کیبورد و خالی بودن مقدار آن، کیبوردی به کاربر نمایش داده نمی‌شود.

 

 

 

ارسال فایل به سرور :

توسعه‌دهندگان برای ارسال فایل به کاربران می‌بایست به این طریق ارتباط خود را برقرار کنند:

مقدار TOKEN در ابتدای ثبت نام بات به شما داده شده است.

شما می‌بایست فایل مورد نظر را به صورت MultiPart با کلید واژه ی file برای سرور ارسال کنید. در صورت موفقیت امیز بودن مقدار http status برگشتی 200 می‌باشد. و پیامی در قالب JSON به شما ارسال می‌شود که شامل url فایل شما می‌باشد.

نمونه درخواست ارسال فایل با استفاده از curl:

جدول ۱۶: اجزای پیام دریافتی در پاسخ به درخواست آپلود فایل

  نمونه نوع داده داده
۱ … hlrwMiCwwkJvSN9wuCQ4a1FL2LaAg0SXdAkN String fileUrl
۲ OK String resultMessage
۳ 200 Integer resultCode

مثال

 

 

 

 

دریافت فایل آپلود شده :

توسعه‌دهندگان برای دریافت فایل می‌بایست به این طریق ارتباط خود را برقرار کنند:

مقدار TOKEN در ابتدای ثبت نام بات به شما داده شده است.

شما می‌بایست fileUrl خود را در انتهای درخواست http خود قرار دهید و مانند نمونه‌ی بالا برای ما ارسال کنید.

مثال

 

 

 

 

کتابخانه ها در ساخت ربات سروش پلاس :

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

کتابخانه‌ی php:

 

 

کتابخانه‌ی python: