PDA

View Full Version : ایجاد کلیدهای inline در ربات پیام رسان بله



hamed_benz
دوشنبه 29 مهر 1398, 09:40 صبح
سلام
در حال پیاده سازی یه ربات توی پیام رسان بله هستم، هونطور که میدونید ربات ها عموما 2 نوع کلید دارن، یک نوع که میاد و زیر صفحه چت قرار میگیره ( ReplyKeyboardMarkup ) و نوع دیگه که داخل خود صفحه چت دکمه ها قرار میگیرن ( InlineKeyboardMarkup ).
من با گزینه اول هیچ مشکلی ندارم و به درستی کلیدها نمایش داده میشه، اما زمانی که میخوام کلیدهای inline رو ارسال کنم با ارور 400 از طرف سرور بله مواجه میشم که میگه ریکوئست صحیح نیست.
آدرس سایت مستندات بله: https://dev.bale.ai/api

کلاس هایی که من ایجاد کردم:



public class InlineKeyboardMarkup : IMarkup
{
public InlineKeyboardButton[][] inline_keyboard { get; set; }
}


public class InlineKeyboardButton
{
public string text { get; set; }


public string url { get; set; }


public string callback_data { get; set; }


public string switch_inline_query { get; set; }


public string switch_inline_query_current_chat { get; set; }


public bool pay { get; set; }
}


و خود ساختار کلید:


public static InlineKeyboardMarkup InlineHomeMenu
{
get
{
return new InlineKeyboardMarkup()
{
inline_keyboard = new InlineKeyboardButton[][]
{
new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "0",
pay = false,
text = "📝 ثبت نام ",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
},


new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "1",
pay = false,
text = "📋 درخواست ",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
},


new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "2",
pay = false,
text = "📄 رزومه ",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
},


new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "3",
pay = false,
text = "☎️ ارتباط با ما",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
},


new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "4",
pay = false,
text = "🎯 آموزش ",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
},


new InlineKeyboardButton[]
{
new InlineKeyboardButton()
{
callback_data = "5",
pay = false,
text = "⚙️ مدیریت سیستم",
url = "",
switch_inline_query = "",
switch_inline_query_current_chat = ""
}
}
}
};
}
}



و سریالایز کردن کلید ها جهت ارسال به سرور:


postData.Add("reply_markup", new JavaScriptSerializer().Serialize(obj.reply_markup) );


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

hamed_benz
دوشنبه 29 مهر 1398, 16:09 عصر
سلام
با پیگیری های که انجام دادم با خود پشتیبانی بله، داکیومنت رو بروزرسانی کردن و چندتا کد ساده برای اینکار قرار دادن.
خلاصه اینکه برای ارسال کاید اینلاین، فقط باید پارامترهای text و callback_data رو مقدار دهی و ارسال کنید و بقیه پارامترهایی که داخل داکیومنت هست رو اصلا نباید ارسال کنید ( نه مقدار و نه خود نام پارامتر رو )

تا اینجا کلیدهای اینلاین نمایش داده شدن، اما با کلیک روی هر کدوم، متاسفانه هیچ پیامی به سرور من ارسال نمیشه و هنوز مشکل کامل برطرف نشدهو

دوستان کسی تجربه ای نداره؟

hamed_benz
چهارشنبه 01 آبان 1398, 11:02 صبح
سلام
مشکل حل شد و فقط قرار میدم که اگر دوستان دیگری به مشکل بر خوردن، اینجا راه حل وجود داشته باشه.
پیام رسان بله در حال حاظر با دو API داره کار میکنه، api قدیی که مختص به خودشون بوده و کار کردن باش هم کمی سخت بوده به نظر.
اما تو api جدید، تا حد امکان تلاش کردن که روند کار رو شبیه به تلگرام کنن تا کاربرها مشتاق بشن بدون دشواری، بات های که روی تلگرام دارن رو، روی بله هم راه بندازن.
اما بحث عدم دریافت آپدیت بعد از انتخاب یک کلید اینلاین.
زمانی که شما ربات خودتون رو داخل بات فادر ایجاد میکنید، از شما درخواست میکنه که وب هووک رو هم ست کنید، کاری که باید انجام بشه این هست که شما این پیغام را نادیده بگیرید و به کمک api وب هووک رو ست کنید، همین.
چون ثبت وب هووک با بات فادر باعث میشه که شما با api های قدیمی متصل بشید که از کلیدهای اینلاین به کمک Update پشتیبانی نمیکنه.

ahmadpj
جمعه 07 مهر 1402, 10:40 صبح
سلام
مشکل حل شد و فقط قرار میدم که اگر دوستان دیگری به مشکل بر خوردن، اینجا راه حل وجود داشته باشه.
پیام رسان بله در حال حاظر با دو API داره کار میکنه، api قدیی که مختص به خودشون بوده و کار کردن باش هم کمی سخت بوده به نظر.
اما تو api جدید، تا حد امکان تلاش کردن که روند کار رو شبیه به تلگرام کنن تا کاربرها مشتاق بشن بدون دشواری، بات های که روی تلگرام دارن رو، روی بله هم راه بندازن.
اما بحث عدم دریافت آپدیت بعد از انتخاب یک کلید اینلاین.
زمانی که شما ربات خودتون رو داخل بات فادر ایجاد میکنید، از شما درخواست میکنه که وب هووک رو هم ست کنید، کاری که باید انجام بشه این هست که شما این پیغام را نادیده بگیرید و به کمک api وب هووک رو ست کنید، همین.
چون ثبت وب هووک با بات فادر باعث میشه که شما با api های قدیمی متصل بشید که از کلیدهای اینلاین به کمک Update پشتیبانی نمیکنه.

آقا تشکر بابت راهنمایی کاربران
من ربات رو با C#‎‎ ساختم و مشکلی ندارم جز اینکه سایز دکمه ها در حالت inline_keyboard کوچک میشن و متن ناقص دیده میشه و هیچ راهی برای حل این مشکل پیدا نکردم
ضمنا resize_keyboard هم تاثیری در نتیجه نداره

اما خود BotFather دکمه شیشه ای بزرگ داره

اگر کسی میدونه چطور باید سایز دکمه ها رو افزایش داد ممنون میشم اطلاع بده.

پیداش کردم:

اگر کلید ها رو به این صورت تعریف کنید در یک خط چیده میشن:
[[key1 , key2, key3 ]]

اما اگر به این صورت تعریف کنید زیر هم چیده میشن:

[[key1] , [ket2] , [key3]]