Dentro do Builder é possível utilizar os nlus_extras de dois modos:
Input
Ao configurar um input, é possível escolher com qual NLU a resposta do usuário será processada.
Caso o nlu_id não esteja na lista que aparece na tela de edição do assistente, o NLU padrão será utilizado.
{
"default": {
"type": "text_input",
"payload": {
"nlu_id": 6
}
}
}
Action
A action set_nlu permite alterar o NLU do assistente.
O NLU extra será utilizado em todo o assistente a menos que ocorra um evento de new_dialog, reiniciando a conversa.
[
{
"name": "set_nlu",
"parameters": {
"nlu_id": 7
},
"result_variable": "set_nlu_response"
}
]
Ao usar essa ação uma nova variável de sistema ficará disponível: context.system.nlu_id.
A partir desse ponto, qualquer chamada com cognitivo usará esse nlu_id para o processamento.
Caso o nlu_id (tanto da action quanto do input) não esteja na lista que aparece na tela de edição do assistente, o NLU padrão será utilizado e os retornos e erro estarão disponíveis:
- se o nlu_id for diferente de um número: { 'code': 500, 'message': 'nlu_id is not a number.'}
- se o nlu_id usado não estiver na lista de nlu_extra: { 'code': 500, 'message': 'There is no nlu with the provided id linked to this assistant.'}
Ao vincular mais de um NLU ao assistente, uma prioridade deverá ser usada.
Caso ocorra uma troca de NLU por meio do set_nlu a continuação da conversa será com base no NLU definido pela ação.
Porém, se houver uma troca no NLU e posteriormente for enviado um input que corresponde a um nlu_id diferente, o NLU prioritário será àquele fornecido via input.
Portanto, a ordem de prioridade no Builder será: nlu_id setada no input > nlu_id de context.system.nlu_id > nlu_id do NLU padrão
Então, caso você tenha usado a action set_nlu e depois tenha um input com nlu_id diferente, o nlu_id usado no input será usado.