پاسخ به نظرسنجی رویداد
رویدادهای امکان ارسال نظرسنجی برای شرکت کننده گانشان را دارا می باشند. از طرفی راهی برای پاسخگویی به سوالات نظرسنجی نیاز است.
هدف این مطلب توضیح، نحوه پاسخ گویی به سوالات نظرسنجی ارسال شده به شرکت کننده می باشد.
برای پاسخ گویی نیاز به کد بلیت، آی دی نظرسنجی و آی دی سوال (ها) همراه با پاسخ شان وجود دارد که نیاز است بصورت کتبی تحویل ریسورس مورد نظر شود.
برای ثبت پاسخ های نظرسنجی به این شیوه عمل می کنیم:
POST https://api.evand.com/surveys/SURVEY_ID/answers
{
"attendee_id": "TICKET_CODE",
"questions": [
{
"id": 1,
"answer": ["no", "hello"]
},
{
"id": 2,
"answer": "yes"
},
{
"id": 3,
"answer": ["yes"]
}
]
}
همونطور که ملاحظه می کنید، آی دی نظرسنجی (SURVEY_ID) در URI ریسورس تعیین شده است. یعنی نیازه که قرار بگیره.
کد بلیت شرکت کننده (TICKET_CODE) هم در بدنه درخواست به عنوان attendee_id نیازه ارسال بشه.
فید questions هم بصورت آرایه می باشد که شامل آبجکت هایی که دو فیلد id که مربوط به آی دی سوال مورد نظر و answer که پاسخ به سوال مربوطه می شوند.
همانطوری که ملاحظه می کنید برای پاسخ سوال مورد نظر هم متن ساده و هم آرایه استفاده شده است.
در صورتی که سوال مورد نظر دو پاسخه باشه، می تونید پاسخ رو به شکل آرایه ارسال کنید.
درصورتی که یه پاسخ داشته باشه، می تونید بصورت متن ارسال کنید.
البته این قابلیت هم وجود داره که در صورتی که یه پاسخ هم داشته باشید، به شکل آرایه و دارای تنها یک عضو رو ثبت و ارسال بکنید. این برای پیاده سازی ساده و یکنواختی تو کدها بود و سلیقه ایست. از هر روش که راحتر بود می شه استفاده کرد.
نکته ای که وجود داره اینه که ولیدیشن های موجود فقط برای پاسخ اولی (چه آرایه باشه و چه متن ساده باشه) اجرا خواهند شد و برای پاسخ های دوم به بعد، ولیدیشن ای اجرا نمی شه.
نکته بعدی اینکه برای هر سوال تا هر پاسخ خواستید می تونید ثبت کنید و محدودیتی از بک اعمال نمی شه.
محدودیت و خطاها
- از جمله مهمترین محدودیت ها، امکان پاسخ گویی به نظرسنجی فقط برای یکبار می باشد. و بعد از ثبت پاسخ، امکان تغییر پاسخ و یا ثبت دوباره پاسخ سوالات نظرسنجی وجود نخواهد داشت.
{
"message": "خطا در مقادیر ورودی",
"errors": {
"attendee_id": [
"فقط یکبار می شود به نظرسنجی پاسخ داد."
]
},
"status_code": 422
}
- در صورتی که آی دی سوال مورد نظر ارسال وجود نداشته باشه، با همچین خطایی روبرو می شید:
{
"message": "خطا در مقادیر ورودی",
"errors": {
"question_id": [
"کد سوال انتخاب شده، معتبر نیست."
]
},
"status_code": 422
}
ممکنه براتون سوال بشه که آی دی سوالی که اشتباه فرستاده بودیم چی بود؟ راهی نیست متاسفانه :))
- در صورتی که پاسخ به سوالی ارسال نشده باشه و پاسخ به سوال ضروری باشه، با همچین خطایی روبرو می شویم:
{
"message": "خطا در مقادیر ورودی",
"errors": {
"answer_1": [
"پاسخ به این سوال ضروری می باشد."
]
},
"status_code": 422
}
اینجا آی دی سوال رو می شه پیدا کرد. و عدد ۱ در answer_1 فوق، اشاره به آی دی سوال می کنه.
- در صورتی که سوالی دارای ولیدیشن باشه و پاسخ نادرستی برایش در ثبت شود، با همچین خطایی روبرو خواهیم بود:
{
"message": "خطا در مقادیر ورودی",
"errors": {
"answer_1": [
"answer 1 انتخاب شده، معتبر نیست."
]
},
"status_code": 422
}
پرسش و پاسخ
ممکنه سوالاتی براتون پیش بیاد که برای نویسنده این مطلب پیش آماد و سعی می کنم بصورت کامل و بی نقص جواب بدم :)
سوال اول: 😀
آی دی رویداد و کد بلیت رو از کجا گیر بیارم؟ در ایمیلی که برای کاربر ارسال می شه، لینکی قرار داده شده است که به سایت ایوند هدایت می شه.
لینک مورد نظر بدین شرح است:
https://evand.com/events/EVENT_SLUG/surveys/SURVEY_ID?attendee_id=TICKET_CODE
سوال دوم:
سوالات نظرسنجی رو از کجا پیدا کنم؟ یادم نمی یاد راستش. اگه خیلی مهمه بگین تو پروژه بگردم و مستند کامل و جامع ای براش تهیه کنم :))
سوال سوم:
این شیوه پاسخ گویی که می شه آرایه و یا متن فرستاد در کل سیستم پیاده شده و یا مختص سوالات نظرسنجی است؟ خیلی دلم می خواست کل سیستم یه دست باشه، ولی خوب از آنجایی که اسرار بر سریع تمام شدن پروژه بود، دیگه نشد وقت بیشتری بزارم و کل سیستم یکنواخت بشه و این قابلیت فقط برای سوالات نظرسنجی هست. در صورت نیاز می شه برای کل سیستم هم بسظش داد.
سوال چهارم:
یادم نمی یاد سوال مربوطه!
همین دیگه.
تا قصه ای دیگر، خدانگهدار
نظرات