62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
import json
|
|
|
|
import requests
|
|
from requests.structures import CaseInsensitiveDict
|
|
|
|
from jarvis.utils import config_utils
|
|
|
|
client_url = config_utils.get_in_config("CLIENT_URL")
|
|
|
|
|
|
def ask_for_microphone_output(record_for_seconds, speech_before_input):
|
|
data = {
|
|
'record_for_seconds': record_for_seconds,
|
|
'speech_before_input': speech_before_input
|
|
}
|
|
|
|
call_client_api("POST", "/record", json.dumps(data))
|
|
|
|
|
|
def ask_for_input(listen_for_seconds, speech_before_input):
|
|
data = {
|
|
'listen_for_seconds': listen_for_seconds,
|
|
'speech_before_input': speech_before_input
|
|
}
|
|
|
|
call_client_api("POST", "/input", json.dumps(data))
|
|
|
|
|
|
def speak(speech):
|
|
data = {
|
|
'speech': speech
|
|
}
|
|
call_client_api("POST", "/speak", data)
|
|
|
|
|
|
def sound(sound_name):
|
|
data = {
|
|
'sound_name': sound_name
|
|
}
|
|
call_client_api("POST", "/sound", data)
|
|
|
|
|
|
def call_client_api(method, url, json_data=None):
|
|
if json_data is None:
|
|
json_data = {}
|
|
|
|
try:
|
|
url_service = client_url + url
|
|
|
|
headers = CaseInsensitiveDict()
|
|
headers["Authorization"] = config_utils.get_in_config("API_KEY")
|
|
headers["Content-Type"] = "application/json; charset=utf8"
|
|
|
|
if method == 'GET':
|
|
return json.loads(requests.get(url_service, headers=headers).content.decode("utf-8"))
|
|
elif method == 'POST':
|
|
json_data = json.dumps(json_data)
|
|
return json.loads(
|
|
requests.post(url_service, headers=headers, data=json_data.encode("utf8")).content.decode("utf-8"))
|
|
except:
|
|
print("Error when calling the client API")
|