0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

twilloでchat-GPTと電話で会話する

Posted at

chat-GPTと会話する

コールセンターでの活用に向けて、電話で会話してみたいと思いコードを書いてみた。

事前に必要なアカウント

  1. chat-GPT(API🔑)
  2. twillo
  3. ngrok
main.py
from flask import Flask, request, redirect
from twilio.twiml.voice_response import VoiceResponse
import twilio.twiml
import time
import requests
from twilio.twiml.voice_response import Gather, VoiceResponse, Say
import openai
import json

OPENAI_API_KEY = ""
app = Flask(__name__)


def question(comment):
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + OPENAI_API_KEY,
    }

    json_data = {
        "model": "gpt-4-1106-preview",
        "messages": [
            {
                "role": "user",
                "content": comment + "短文で答えてください。",
            },
        ],
        "temperature": 0.7,
    }

    response = requests.post(
        "https://api.openai.com/v1/chat/completions", headers=headers, json=json_data
    )
    json_data = json.loads(response.text)
    print(json_data["choices"][0]["message"]["content"])
    return json_data["choices"][0]["message"]["content"]


@app.route("/answer", methods=["GET", "POST"])
def answer_call():
    """Respond to incoming phone calls with a brief message."""
    # Start our TwiML response
    response = VoiceResponse()
    gather = Gather(input="speech", language="ja-JP", action="/sendsms", method="POST")
    gather.say(
        "お電話ありがとうございます。メッセージをどうぞ。", language="ja-JP", voice="Polly.Kazuha-Neural"
    )
    response.append(gather)

    return str(response)


@app.route("/sendsms", methods=["POST"])
def sendsms():
    # 音声認識結果を取得する
    result = request.form["SpeechResult"] or ""
    to = request.form["From"] or ""
    if result != "" and to != "":
        print(result, to)
        resp = VoiceResponse()
        resp.say(
            "音声を認識しました。ありがとうございます。確認しますので、少々お待ちください、",
            language="ja-JP",
            voice="Polly.Kazuha-Neural",
        )
        res = question(result)
        resp.say(
            res,
            language="ja-JP",
            voice="Polly.Kazuha-Neural",
        )
        return str(resp)
    else:
        resp = VoiceResponse()
        resp.say("申し訳ございません。音声認識ができませんでした。", language="ja-JP", voice="alice")
        return str(resp)


if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=8000)
  1. twillo登録
  2. 電話番号を取得
  3. ngrokも登録 ☜これ大事
  4. main.pyを立ち上げ
  5. 別ターミナルで以下を実行、出てきたURLをtwilloに登録
ngrok http 8000

感想

音声にして聴くと、chat-GPTのフレンドリーさが、ますますフレンドリーになりました。

chat-GPTって、文字の言葉が基本優しいしフレンドリー。
あの優しい文面を音声で話すと、もっとフレンドリーに感じる。優しい、沁みる。

クレームの一次対応は、chat-GPTで正解な気がする。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?