Os botões melhoram a experiência de conversação, permitindo que o usuário responda a uma pergunta ou selecione o botão desejado, em vez de ter que digitar uma resposta com um teclado. Ao contrário dos botões que aparecem dentro de cartões ricos (que permanecem visíveis e acessíveis ao usuário mesmo depois de selecionados), os botões que aparecem dentro do painel de ações sugeridas desaparecerão depois que o usuário fizer uma seleção. Isso impede que o usuário selecione botões obsoletos dentro de uma conversa e simplifica o desenvolvimento do bot, já que você não precisará levar em conta esse cenário.
Nota
Os SDKs JavaScript, C# e Python do Bot Framework continuarão a ser suportados, no entanto, o Java SDK está sendo desativado com suporte final de longo prazo terminando em novembro de 2023.
Os bots existentes construídos com o Java SDK continuarão a funcionar.
As ações sugeridas permitem que seu bot apresente botões. Você pode criar uma lista de ações sugeridas (também conhecidas como respostas rápidas) que serão mostradas ao usuário para um único turno da conversa.
Aqui está um exemplo do exemplo de ações sugeridas.
// Creates and sends an activity with suggested actions to the user. When the user
// clicks one of the buttons the text value from the "CardAction" will be
// displayed in the channel just as if the user entered the text. There are multiple
// "ActionTypes" that may be used for different situations.
private static async Task SendSuggestedActionsAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
var reply = MessageFactory.Text("What is your favorite color?");
reply.SuggestedActions = new SuggestedActions()
{
Actions = new List<CardAction>()
{
new CardAction() { Title = "Red", Type = ActionTypes.ImBack, Value = "Red", Image = "https://via.placeholder.com/20/FF0000?text=R", ImageAltText = "R" },
new CardAction() { Title = "Yellow", Type = ActionTypes.ImBack, Value = "Yellow", Image = "https://via.placeholder.com/20/FFFF00?text=Y", ImageAltText = "Y" },
new CardAction() { Title = "Blue", Type = ActionTypes.ImBack, Value = "Blue", Image = "https://via.placeholder.com/20/0000FF?text=B", ImageAltText = "B" },
},
};
await turnContext.SendActivityAsync(reply, cancellationToken);
}
Aqui está um exemplo do exemplo de ações sugeridas.
/**
* Send suggested actions to the user.
* @param {TurnContext} turnContext A TurnContext instance containing all the data needed for processing this conversation turn.
*/
async sendSuggestedActions(turnContext) {
const cardActions = [
{
type: ActionTypes.PostBack,
title: 'Red',
value: 'Red',
image: 'https://via.placeholder.com/20/FF0000?text=R',
imageAltText: 'R'
},
{
type: ActionTypes.PostBack,
title: 'Yellow',
value: 'Yellow',
image: 'https://via.placeholder.com/20/FFFF00?text=Y',
imageAltText: 'Y'
},
{
type: ActionTypes.PostBack,
title: 'Blue',
value: 'Blue',
image: 'https://via.placeholder.com/20/0000FF?text=B',
imageAltText: 'B'
}
];
var reply = MessageFactory.suggestedActions(cardActions, 'What is the best color?');
await turnContext.sendActivity(reply);
}
Aqui está um exemplo do exemplo de ações sugeridas.
/**
* Creates and sends an activity with suggested actions to the user. When the user
* clicks one of the buttons the text value from the "CardAction" will be
* displayed in the channel just as if the user entered the text. There are multiple
* "ActionTypes" that may be used for different situations.
*/
private static CompletableFuture<Void> sendSuggestedActions(TurnContext turnContext) {
Activity reply = MessageFactory.text("What is your favorite color?");
CardAction redAction = new CardAction();
redAction.setTitle("Red");
redAction.setType(ActionTypes.IM_BACK);
redAction.setValue("Red");
redAction.setImage("https://via.placeholder.com/20/FF0000?text=R");
redAction.setImageAltText("R");
CardAction yellowAction = new CardAction();
yellowAction.setTitle("Yellow");
yellowAction.setType(ActionTypes.IM_BACK);
yellowAction.setValue("Yellow");
yellowAction.setImage("https://via.placeholder.com/20/FFFF00?text=Y");
yellowAction.setImageAltText("Y");
CardAction blueAction = new CardAction();
blueAction.setTitle("Blue");
blueAction.setType(ActionTypes.IM_BACK);
blueAction.setValue("Blue");
blueAction.setImage("https://via.placeholder.com/20/0000FF?text=B");
blueAction.setImageAltText("B");
SuggestedActions actions = new SuggestedActions();
actions.setActions(Arrays.asList(redAction, yellowAction, blueAction));
reply.setSuggestedActions(actions);
return turnContext.sendActivity(reply).thenApply(sendResult -> null);
}
Aqui está um exemplo do exemplo de ações sugeridas.
async def _send_suggested_actions(self, turn_context: TurnContext):
"""
Creates and sends an activity with suggested actions to the user. When the user
clicks one of the buttons the text value from the "CardAction" will be displayed
in the channel just as if the user entered the text. There are multiple
"ActionTypes" that may be used for different situations.
"""
reply = MessageFactory.text("What is your favorite color?")
reply.suggested_actions = SuggestedActions(
actions=[
CardAction(
title="Red",
type=ActionTypes.im_back,
value="Red",
image="https://via.placeholder.com/20/FF0000?text=R",
image_alt_text="R",
),
CardAction(
title="Yellow",
type=ActionTypes.im_back,
value="Yellow",
image="https://via.placeholder.com/20/FFFF00?text=Y",
image_alt_text="Y",
),
CardAction(
title="Blue",
type=ActionTypes.im_back,
value="Blue",
image="https://via.placeholder.com/20/0000FF?text=B",
image_alt_text="B",
),
]
)
return await turn_context.send_activity(reply)
Recursos adicionais
Você pode acessar o código-fonte completo para o exemplo de ações sugeridas em C#, JavaScript, Java e Python.