Сообщение от
Нияз070
Приветствую
А как связать Алису и owencloud?!
ну собственно как и в названии темы, почитать документацию https://yandex.ru/dev/dialogs/ и https://cloud.yandex.ru/docs/functions/
в общих чертах нужна учетная запись на яндексе, знать API owencloud и терпение, пока навык будет модерироваться
мой код выглядит так
Код:
from random import randint
import requests
import json
import os
class ApiClient:
def __init__(self, base_address):
self.base_address = base_address
def post(self, path="/", params=None, data=None, json=None, headers=None):
url = f"{self.base_address}{path}"
return requests.post(url=url, params=params, data=data, json=json, headers=headers)
def ol_api():
return ApiClient(base_address="https://api.owencloud.ru/")
def last_data(ol_api, token, unit):
headers = { 'Authorization' : 'Bearer ' + token }
data = "{\"ids\":["+unit+"]}" #
response = ol_api.post("v1/parameters/last-data",headers=headers,data=data)
unit = response.json()
refer = unit[0]["values"]
return refer[0]["v"]
def get_response(name="Чего изволите?\nМожно посмотреть значение температуры или уставки"):
return {
"version": "1.0",
"response": {
'text': name
},
"end_session": "false"
}
dict_ = {1:'Запрос не понятен',2:'Ответа нет',3:'Сформулируйте вопрос, помощь наше всё'}
def handler(event, context):
response = ''
if 'request' in event and event['request']['command'] == '':
response = get_response()
elif 'request' in event and 'nlu' in event['request']:
name = dict_[randint(1,3)]
for unit in event['request']['nlu']['tokens']:
unit = unit.lower()
if 'температур' in unit:
name = "Температура: "+last_data(ol_api(), os.environ.get('SEC_TOK'), '4337438')
elif 'уставк' in unit:
name = "Уставка: "+last_data(ol_api(), os.environ.get('SEC_TOK'), '4337428')
elif 'помощь' in unit:
name = "Запрос может звучать как: покажи температу или покажи уставку"
elif 'умеешь' in unit:
name = "Цель навыка обеспечить информацией о текущем состоянии объекта ГВС. Отобразить по запросу текущую температуру или уставку температуры, которой надо придерживаться"
response = get_response(name)
return response
сам навык после трех дней модерации здесь
os.environ.get('SEC_TOK') это токен из овеновского облака, сохраненный в переменной окружения среды выполнения навыка
это самый простой вариант, есть и более предпочтительные