Я использую SDK Node.js, чтобы создать бот для skype, используя инфраструктуру ботов Microsoft.CardAction и сообщение показано (node.js SDK - skype channel)
Я экспериментирую с несколькими разными типами поведения, и у меня возникают некоторые проблемы.
Например, я создал набор карт ThumbNails с изображением, текстом и тремя кнопками каждый. Одна кнопка открывает веб-страницу. Остальные два используются в приглашении Prompt.choice для продолжения беседы. Проблема в том, что я считаю, что мне нужно показать ярлык для подсказки для работы. Правильно ли это? Поскольку ярлык может быть длинным или может не иметь никакого смысла, чтобы пользователь мог снова увидеть, что он нажал.
Я пытаюсь вставить код, чтобы попытаться объяснить лучше:
bot.dialog('/mydialog', [
function (session) {
// Ask the user to select an item from a carousel.
var msg = new builder.Message(session)
.textFormat(builder.TextFormat.xml)
.attachmentLayout(builder.AttachmentLayout.carousel)
.attachments([
new builder.ThumbnailCard(session)
.title("Card number 1")
.text("Description first card")
.images([
builder.CardImage.create(session, "https://www.example.org/img1.gif")
.tap(builder.CardAction.showImage(session, "ttps://www.example.org/img1.gif")),
])
.buttons([
builder.CardAction.openUrl(session, "https://google.com", "Website"),
builder.CardAction.imBack(session, "select:100", "button 1"),
builder.CardAction.imBack(session, "select:101", "Button2")
]),
new builder.ThumbnailCard(session)
.title("Card 2")
.text("Description card 2")
.images([
builder.CardImage.create(session, "https://image.jpg")
.tap(builder.CardAction.showImage(session, "https://image.jpg")),
])
.buttons([
builder.CardAction.openUrl(session, "https://google.com", "Website"),
builder.CardAction.imBack(session, "select:200", "button3"),
builder.CardAction.imBack(session, "select:201", "button4")
]),
]);
builder.Prompts.choice(session, msg, "select:100|select:101|select:200|select:201");
},
function (session, results) {
var action, item;
var kvPair = results.response.entity.split(':');
switch (kvPair[0]) {
case 'select':
action = 'selected';
break;
}
switch (kvPair[1]) {
case '100':
item ="/dialog1";
break;
case '101':
item ="/dialog2";
break;
case '200':
item ="/dialog3";
break;
case '201':
item ="/dialog4";
break;
}
session.beginDialog(item);
}
]);
привет, Сергей, большое спасибо за ваш ответ. Вы правы, говоря, что его можно нажать в любое время, так что это может быть проблемой. – jsabina
Проблема в том, что они хотят кнопку внутри карты. Я попробую postBack, как было предложено, спасибо! – jsabina