def registered_chatter(request, handler): chatter = Chatter(request.param) chatter.add_base('홈', handler['home_keyboard']) chatter.add_rule('자기소개', '홈', '소개', handler['intro']) chatter.add_rule('오늘의 날씨', '소개', '홈', handler['weather']) chatter.add_rule('사이트로 이동하기', '홈', '홈', handler['web']) chatter.add_rule('취소', '*', '홈', handler['cancel']) request.cls.chatter = chatter
def test_no_rule(self): chatter = Chatter() rule = chatter.rules.first() assert rule is None with pytest.raises(Exception) as excinfo: chatter.rules.one() assert 'No rule was found' in str(excinfo.value) rules = chatter.rules.all() assert rules == []
from django.shortcuts import render from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from chatterbox import Chatter from chatterbox.response import Text, Keyboard, Photo, MessageButton, Message import json # Create your views here. chatter = Chatter() @chatter.base(name='홈') def hom_keyboard(): home_buttons = ['자기소개', '사이트로 이동하기'] return Keyboard(home_buttons) @chatter.rule(action='자기소개', src='홈', dest='소개') def intro(data): message = '안녕하세요! 무엇을 도와드릴까요?' buttons = ['오늘의 날씨', '취소'] return Text(message) + Keyboard(buttons) @chatter.rule(action='오늘의 날씨', src='소개', dest='홈') def weather(data): text = Text('오늘은 하루종일 맑겠습니다.') sunny_image_url = 'https://www.python.org/static/img/python-logo.png' photo = Photo(url=sunny_image_url, width=600, height=401) keyboard = chatter.home() return text + photo + keyboard
from flask import Flask, request, jsonify from chatterbox import Chatter, Text, Keyboard app = Flask(__name__) """ - sqlite memory를 사용하면 gunicorn 등을 사용해 멀티 프로세스로 앱을 구동시킬 때 Chatter끼리 데이터를 공유할 수 있습니다. - frequency를 명시해 일정 횟수마다 timeout된 데이터를 정리할 수 있습니다. - fallback을 설정하면 사용자의 현재 state와 action에 맞는 규칙이 없더라도 action만을 따져서 일치하는 규칙을 실행합니다. """ chatter = Chatter(memory='sqlite', frequency=20, fallback=True) @chatter.base(name='홈') def home_keyboard(): home_buttons = ['숫자 맞추기'] return Keyboard(home_buttons) @chatter.rule(action='숫자 맞추기', src='홈', dest='맞추는중') def guess(data): message = '숫자 맞추기를 시작합니다.' return Text(message) + Keyboard(type='text') """ dest를 명시하지 않고 규칙을 추가하면 함수 안에서 dest가 명시된 다른
def chatter(request): return Chatter(request.param)
def test_create_chatter(self): chatter = Chatter() assert chatter is not None