글라스를 스마트하게 하는 기술~그 2:Line MessageAPI~

개요:



마시기에 지각할 것 같아, 먼저 건배해 버렸으면 좋겠지만, 간사에게 연락이 되지 않는, 그런 경험 없습니까?
내가 소속하는 aNo연은, 원격전언 글라스 「스마트 글라스 e간사」를 발표했습니다.
 이 기사는, 「스마트 글라스 e 간사」에 사용되고 있는 기술을 소개합니다.

실시예



말하는 유리 "e 간사", Line에서 말해주는 기능 탑재! Line의 대화를 간과하고 있었던 것을 막습니다. #M5Stack #IF_DIY 피 c. 라고 r. 이 m/ybP부2X↑D — aNo연 (@anoken2017) 2018년 10월 7일


시스템 구성





Raspberry PI 준비



사전에 LineDeveloper의 HP에서 계정을 얻고 Developer TrialMessaging의 LineBot을 가져옵니다.



Line Developer



Line Developer



Channel Secret 비밀 키와 Channel Access Token 토큰을 넣고

아래 명령을 치십시오.



export LINE_CHANNEL_SECRET=YOUR_LINE_CHANNEL_SECRET
export LINE_CHANNEL_ACCESS_TOKEN=YOUR_LINE_CHANNEL_ACCESS_TOKEN


line-bot-sdk-python



Line Bot의 Python 샘플을 다운로드하고 python 종속 라이브러리를 설치합니다.



 $ git clone  https://github.com/line/line-bot-sdk-python.git
 $ cd ~/line-bot-sdk-python
 $ pip3 install -r requirements.txt


python-osc



python에서 OSC를 사용하는 라이브러리, python-osc를 설치합니다.



pip3 install python-osc


ngrok



Line 서버에서 LAN 내에서 실행되는 RasberryPI에 액세스하려면

네트워크를 릴레이하는 도구인 ngrok을 설치합니다.



 $ brew update
 $ brew install homebrew/binary/ngrok2


 $ ngrok http 8000


ngrok에서 얻은 글로벌 IP 주소를 Line Developer의 WebHookURL에 입력합니다.





구현 예



line-bot-sdk-python 샘플 중 하나, flask-kitchensink,

handle_text_message 함수를 다음과 같이 편집합니다.

Line에서 수신한 메시지를 OSC로 변환하여 전송합니다.

M5Stack에서는 OSC의 메시지를 AquesTalkTTS에 입력하여 음성을 출력합니다.



Raspberry PI



from pythonosc import osc_message_builder
from pythonosc import udp_client
port_num = 10000
parser = argparse.ArgumentParser()
parser.add_argument("--ip", default="192.168.1.", help="The ip of th OSC Server")
parser.add_argument("--port", type=int, default=port_num, help="The port the OSC server is listening on")
args = parser.parse_args()
client = udp_client.SimpleUDPClient(args.ip, args.port)


@handler.add(MessageEvent, message=TextMessage)
def handle_text_message(event):
    text = event.message.text
    cmd = 'talk ' + text
    print(cmd)
    text2 ='speak to message'
    client.send_message("/msg", cmd)
    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=text2))



M5stack



#include <M5Stack.h>
#include <ArduinoOSC.h>
#include <AquesTalkTTS.h>
const char* ssid = "";
const char* password = "";
WiFiUDP udp;
ArduinoOSCWiFi osc;
const int recv_port = 10000;
void messageCb(OSCMessage& m) {
  String str = m.getArgAsString(0);
  int len = str.length(); 
  String cmd = str.substring(0, 4);
  String value = str.substring(5);
  if (cmd == "talk") {
    TTS.playK(value.c_str(), 100);
    delay(3000);
  }
}
void setup() {
  M5.begin();
  setupWiFi();
  osc.begin(udp, recv_port);
  osc.addCallback("/msg", &messageCb);
  int iret = TTS.createK("");
}
void loop() {
  osc.parse();
}







aNo 연구: htps : // 그 싸움. 지 m도. 코m/


좋은 웹페이지 즐겨찾기