ask
The ask method sends a question to the specified answer systems in an Ask action.
Syntax
ask(question, systems, maxresults, disambiguation, queryparameters)
Arguments
| Argument | Description |
|---|---|
question
|
(string) The question that you want to ask. |
systems
|
(string) A table that contains a list of systems that you want to send the question to. This argument is optional. If you do not specify systems, the method sends the question to all configured answer systems. |
maxresults
|
(integer) The maximum number of answers to return. This argument is optional. The default value is 1. |
disambiguation
|
(Boolean) Set to true to run a disambiguation task when the ask action returns multiple answers. In this case, after the Lua function is complete, the conversation returns a disambiguation task prompt, which overrides any other prompts that you set in the Lua function. This argument is optional, and applies only when you call it from an invalid_input_lua function. The default value is false. |
queryparameters
|
(table) An optional table of parameters (and associated values) to customize the query. You can use the same parameters that are supported by the Ask action. For example, you could set the Parameters not recognized by the Ask action but permitted by AllowedQueryParameters are passed through to child servers (for example an Answer Bank Agentstore). |
Returns
A list of LuaXmlDocument objects that represent the answers.
Example
function get_text(document, xpath)
return document:XPathValue(xpath)
end
function plan_holiday(taskUtils)
local destination = taskUtils:getTaskVar("USER_DESTINATION")
local answers = taskUtils:ask(string.format("Why do tourists visit %s?", destination), {}, 5, false)
local text = nil
if #answers > 0 then
text = get_text(answers[1], "/answer/text")
end
if text ~= nil then
local prompt1 = LuaUserPrompt:new(text)
taskUtils:setPrompts(
{prompt1}
)
end
else
local prompt2 = LuaUserPrompt:new(string.format("I don't have any useful tourist information about %s.", destination))
taskUtils:setPrompts(
{prompt2}
)
end
end