我的目标是获取给定Intent的所有训练短语并将其保存到JSON文件中,然后使用它来更新所述Intent。
但是我的特工不是英语,并且在训练短语中有一些特殊字符,这些字符在我打印或尝试保存结果时不正确。
我关注了Dialogflow软件包文档:https://dialogflow-python-client-v2.readthedocs.io/en/latest/gapic/v2beta1/api.html#dialogflow_v2beta1.IntentsClient.get_intent
要获取以下代码:
import json
import dialogflow_v2beta1
from google.oauth2 import service_account
dialogflow_key = json.load(open('/path/to/agent/key.json'))
credentials = (service_account.Credentials.from_service_account_info(dialogflow_key))
client = dialogflow_v2beta1.IntentsClient(credentials=credentials)
parent = client.intent_path('[PROJECT_ID]', '[INTENT_ID]')
results = client.get_intent(parent, language_code='[agent_language_code]',
intent_view='INTENT_VIEW_FULL')
print(results)
我从结果中得到的是:
name: "[intent_path]"
display_name: "[intent_name]"
priority: 1000000
ml_enabled: true
webhook_state: WEBHOOK_STATE_ENABLED
input_context_names: "[context_name]"
training_phrases {
name: "a0ded20d-b816-4d7d-891d-0a3fbc97637d"
type: EXAMPLE
parts {
text: "cal\303\247a"
}
}
...
get_intent()函数:
返回:一个 Intent 实例。
所以我可以使用 results.training_phrases 访问training_phrases。
问题在于 text 的来源为:
cal\303\247a
应该在什么时候出现:
calça
尽管如果我直接访问 text ,例如:
for phrase in results.training_phrases:
print(phrase.parts[0].text)
字符串正确:
calça
Node.js中的相同代码返回了一个我可以字符串化的对象,特殊字符没有问题。我宁愿在Python中执行此操作,但是如果没有选择,我确实可以选择仅在Node.js中执行。
因此,我想知道是否存在一种“字符串化”此类实例并以字符串形式接收整个对象的方法。
如果其他所有方法都失败了,我会考虑遍历所有文本字符串并将编码后的字符转换为它们各自的字母,但是我不确定使用这种方法对性能的影响和整洁度...
对此我将有很大的见识。