/
ActionOnGoogle.py
97 lines (85 loc) · 2.74 KB
/
ActionOnGoogle.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import requests
import json
from flask import Flask, request, make_response, jsonify
app = Flask(__name__)
# Impostiamo l'endpoint da utilizzare con Dialogflow
@app.route('/my_awesome_endpoint', methods=['POST'])
def send_response():
# Riceviamo il JSON da parsare, la presenza del force=True richiede che la richiesta trasmetta un JSON
req = request.get_json(force=True)
suggestionchip = ["Chiedi ancora", "Esci"]
ResponseFromServer = obtaininfofromserver()
res = {
"fulfillmentText": "Ciao! Il nostro prossimo evento sarà "+ResponseFromServer["event"]+" giorno "+ResponseFromServer["date"]+" alle "+ResponseFromServer["starttime"]+" presso il "+ResponseFromServer["place"],
"fulfillmentMessages": [{
"card": {
"title": ResponseFromServer["event"],
"subtitle": ResponseFromServer["description"],
"imageUri": ResponseFromServer["image"],
"buttons": [{
"text": "🎟️ Ottieni i biglietti",
"postback": ResponseFromServer["url"]
}]
}
}],
"payload": {
"google": {
"expectUserResponse": True,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Ciao! Il nostro prossimo evento sarà "+ResponseFromServer["event"]+" giorno "+ResponseFromServer["date"]+" alle "+ResponseFromServer["starttime"]+" presso il "+ResponseFromServer["place"],
}
}, {
"basicCard": {
"title": ResponseFromServer["event"],
"formattedText":ResponseFromServer["description"],
"subtitle": str(ResponseFromServer["starttime"])+" - "+ResponseFromServer["endtime"],
"image": {
"url": ResponseFromServer["image"],
"accessibilityText": "Immagine dell'evento"
},
"buttons": [{
"title": "🎟️ Ottieni i biglietti",
"openUrlAction": {
"url": ResponseFromServer["url"]
}
}],
}
}
],
"linkOutSuggestion": {
"destinationName": "🗺️ Indicazioni",
"url": ResponseFromServer["maps"]
},
"suggestions": [
{
"title": suggestionchip[0]
},
{
"title": suggestionchip[1]
}
]
}
}
}
}
return make_response(jsonify(res))
# Funzione per ottenere le informazioni
def obtaininfofromserver():
# JSON utilizzato durante l'evento (in caso si vogliano fare dei test)
#url = "https://raw.githubusercontent.com/gdgpisa/actions-on-google-diy/master/API.json"
url = "my.awesome.api"
response = requests.request("GET", url)
response = response.json()
return response
if __name__ == '__main__':
context = ('/etc/letsencrypt/live/my.awesome.domain/fullchain.pem','/etc/letsencrypt/live/my.awesome.domain/privkey.pem')
PORT = 4043
app.run(
debug=True,
port=PORT,
host='0.0.0.0',
ssl_context=context
)