Интерфейсы большинства сервисов Google Cloud определены в Protobuf сообщениях, которые публикуются в репозитории googleapis на Github. Таким образом, вы можете заглянуть прямо под капот Dialogflow, где вы найдете эти два определения для Card
и BasicCard
:
// The card response message.
message Card {
// Optional. Contains information about a button.
message Button {
// Optional. The text to show on the button.
string text = 1;
// Optional. The text to send back to the Dialogflow API or a URI to
// open.
string postback = 2;
}
// Optional. The title of the card.
string title = 1;
// Optional. The subtitle of the card.
string subtitle = 2;
// Optional. The public URI to an image file for the card.
string image_uri = 3;
// Optional. The collection of card buttons.
repeated Button buttons = 4;
}
// The basic card message. Useful for displaying information.
message BasicCard {
// The button object that appears at the bottom of a card.
message Button {
// Opens the given URI.
message OpenUriAction {
// Required. The HTTP or HTTPS scheme URI.
string uri = 1;
}
// Required. The title of the button.
string title = 1;
// Required. Action to take when a user taps on the button.
OpenUriAction open_uri_action = 2;
}
// Optional. The title of the card.
string title = 1;
// Optional. The subtitle of the card.
string subtitle = 2;
// Required, unless image is present. The body text of the card.
string formatted_text = 3;
// Optional. The image for the card.
Image image = 4;
// Optional. The collection of card buttons.
repeated Button buttons = 5;
}
Похоже, единственные различия:
- Кнопки на Карте могут отправлять текст обратно вашему агенту, тогда как на BasicCard они всегда открывают внешний URL-адрес.
- BasicCard может иметь форматированный текст вместо изображения, хотя я не могу найти никакой информации о том, на какой формат они ссылаются (HTML? Markdown?).
- Изображение BasicCard может иметь
accessibility_text
, которое используется некоторыми устройствами без экрана (например, программы чтения с экрана).
Важное отличие, которое не видно из protobufs, но из документации Dialogflow заключается в том, что Card
- это общее Rich Message , которое можно использовать как в действиях в Google, так и в других интеграциях, таких как Facebook Messenger, Twitter, Slack и т. Д. BasicCard
- это тип действий для Google, который не работает ни на какой другой платформе.
Если вам действительно не нужен форматированный текст, вам, вероятно, лучше будет использовать более общий Card
, поскольку он не ломается, когда вы решаете интегрировать своего агента с другой платформой. Имейте в виду, что каждая платформа имеет свои ограничения для Rich Messages, поэтому то, насколько платформенно независима ваша карта, зависит от данных, которыми вы ее заполняете.