Internal platform changes that are not visible to capsule developers will be communicated via internal status updates.
Updated: April 23, 2020
The 20D release was combined with 20E.
You can now use simplified syntax with selection-strategy
to handle common filtering by combining both the advice
with the advice-for
or advice-against
keys.
Examples
selection-strategy {
id (reject-bitcoin-payment-restaurants)
match {
food.AcceptsBitcoin(acceptsBitcoin) {
to-input: food.FindRestaurant(_)
}
}
advise-against ("${acceptsBitcoin}”)
}
selection-strategy {
id (prefer-thai-restaurants)
match {
food.CuisineStyle(style) {
to-input: food.FindRestaurant(_)
}
}
advise-for ("${style == ‘Thai’}”)
}
We've added a new runtime version that covers a number of runtime flags:
auto-insert-navigation-conversation-drivers
concepts-inherit-super-type-features
no-auto-property-value-merging
no-filtering-with-validation
modern-default-view-behavior
modern-prompt-rejection
result-view-capsule-lock
support-halt-effect-in-computed-inputs
use-authorization-header-for-remote-endpoint-oauth
use-input-views-for-selection-list-detail
use-most-specific-instantiation-strategy
no-fallback-dialog-in-views
(New in this release)We now support pt-BR reserved utterances.
You can now use the contextual
EL node evaluation function when you want check if a node is copied over from a previous request, preserving the earlier request's context.
For example, if a user asks a capsule "find sushi restaurants in Miami" and then follows up with "what about Chicago", the type of restaurant, "sushi," is contextual: it was given in the previous request.
Actions now allow you to show a custom result-view using the display sub-key when you encounter an error and halt.
Example
...
input (value) {
type (MyValue) {
validate {
if (...) {
halt {
dialog ("halting due to condition")
display (value.property)
}
}
}
}
}
...
The time
key in activity-support
now allows a conditional block. The format for the conditional is as follows:
...
time {
if (isFuture(this.startDate)) { // uses a Date EL function to check if the startDate is upcoming
expression(this.startDate)
} else {
expression(this.endDate)
}
}
...
Additionally, we've deprecated the ability to have empty time
values. The key now must either have a simple time, such as (time (someDate))
, or a conditional time.
We've also deprecated time values that are min (Optional)
or max (Many)
. The key must now provide a node that contains one, and only one, value.
Deprecation Stages (learn more)
For better security, we now require that all OAuth authorization endpoints, whether remote or local, use HTTPS.
Deprecation Stages (learn more)
We've added the CoffeeOrder
and CurrencyConversion
NL categories.
Deprecation Stages (learn more)
We've introduced three Expression Language node evaluation functions, which return a copy of the node with the evaluation state set in the following ways:
pre(node)
: the node has not yet been evaluated (replaces the now deprecated node.pre()
).mid(node)
: the node is currently being evaluatedpost(node)
: the node has already been evaluatedExamples
Old:
I don't currently have a way to #{action (this.pre())}.
I currently don't have the ability to #{action (this.pre())}.
New:
I don't currently have a way to #{action(pre(this))}.
I currently don't have the ability to #{action(pre(this))}.
Deprecation Stages (learn more)