Ejemplo n.º 1
0
    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 == []
Ejemplo n.º 2
0
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

Ejemplo n.º 3
0
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가 명시된 다른
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
def chatter(request):
    return Chatter(request.param)
Ejemplo n.º 6
0
 def test_create_chatter(self):
     chatter = Chatter()
     assert chatter is not None