Добрый день!
В веб-программировании и в Python я полный профан. Скачал в инете вот такой код (см. ниже), хочу модифицировать для своих корыстных нужд, но для начала неплохо было бы убедиться что код работает и увидеть результат работы.
Сервис должен в ответ на запрос, предложить купить слона.
Код сервиса:
# coding: utf-8
# Импортирует поддержку UTF-8.
from __future__ import unicode_literals
# Импортируем модули для работы с JSON и логами.
import json
import logging
# Импортируем подмодули Flask для запуска веб-сервиса.
from flask import Flask, request
app = Flask(__name__)
logging.basicConfig(level=logging.DEBUG)
# Хранилище данных о сессиях.
sessionStorage = {}
# Задаем параметры приложения Flask.
@app.route("/", methods=['POST'])
def main():
# Функция получает тело запроса и возвращает ответ.
logging.info('Request: %r', request.json)
response = {
"version": request.json['version'],
"session": request.json['session'],
"response": {
"end_session": False
}
}
handle_dialog(request.json, response)
logging.info('Response: %r', response)
return json.dumps(
response,
ensure_ascii=False,
indent=2
)
# Функция для непосредственной обработки диалога.
def handle_dialog(req, res):
user_id = req['session']['user_id']
if req['session']['new']:
# Это новый пользователь.
# Инициализируем сессию и поприветствуем его.
sessionStorage[user_id] = {
'suggests': [
"Не хочу.",
"Не буду.",
"Отстань!",
]
}
res['response']['text'] = 'Привет! Купи слона!'
res['response']['buttons'] = getSuggests(user_id)
return
# Обрабатываем ответ пользователя.
if req['request']['original_utterance'].lower() in [
'ладно',
'куплю',
'покупаю',
'хорошо',
]:
# Пользователь согласился, прощаемся.
res['response']['text'] = 'Слона можно найти на Яндекс.Маркете!'
return
# Если нет, то убеждаем его купить слона!
res['response']['text'] = 'Все говорят "%s", а ты купи слона!' % (
req['request']['original_utterance']
)
res['response']['buttons'] = getSuggests(user_id)
# Функция возвращает две подсказки для ответа.
def getSuggests(user_id):
session = sessionStorage[user_id]
# Выбираем две первые подсказки из массива.
suggests = [
{'title': suggest, 'hide': True}
for suggest in session['suggests'][:2]
]
# Убираем первую подсказку, чтобы подсказки менялись каждый раз.
session['suggests'] = session['suggests'][1:]
sessionStorage[user_id] = session
# Если осталась только одна подсказка, предлагаем подсказку
# со ссылкой на Яндекс.Маркет.
if len(suggests) < 2:
suggests.append({
"title": "Ладно",
"url": "https://market.yandex.ru/search?text=слон",
"hide": True
})
return suggests
При попытке запустить в PySharm получаю: * Process finished with exit code 0
Хотя если попытаться запустить код который возвращает "HelloWorld":
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
получаю строку * Running on
127.0.0.1:5000 (Press CTRL+C to quit)
Пробую в PySharm пройтись отладчиком, он почему то не заходит в функции
Собственно вопрос: как убедиться что сервис работает? Как правильно отладить?
Пробовал так: curl -X POST -H "Content-Type: application/json" -d '{"title":"aaa","url":"bbb"}' localhost:5000
Получаю "400 Bad Request"
Видимо где то ошибка (в ДНК?)....
Помогите пожалуйста.