AWS Polly를 사용해서 시스템 경고를 해보도록 하겠습니다.

6399 단어 PollyPHPAWS
(Qita: 팀 내에서 작년에 쓴 기사를 복사 중)
"AWS re: Invent 2016의 Keynote1에서 텍스트 낭독 서비스""Amazon Polly""가 출시되었습니다!"과
그렇기 때문에 어디에 쓸 수 있을지 생각 중이야
어쨌든 경보를 말하면 편할 것 같아서 서둘러 썼어요.
Polly에 관해서는 여기를 보세요↓
http://dev.classmethod.jp/cloud/aws/reinvent2016-new-service-amazon-polly/

프로비저닝


회사 내에 자원도를 표시하는 40인치 모니터가 설치되어 있기 때문이다
거기서부터 얘기하면 될 것 같아서 이런 구성으로 구축했어요.

SQS에서 모두 꺼내서 mp3 재생성으로 변환, 대기열 제거


맥에 놓인 스크립트의 일부분
        // 100件ずつ処理する
        // sqsから10件ずつしか取得できないのでループして100件取得するようにする
        $messageList = array();
        for ($i = 0; $i < 10; $i++) {
            $start_time = microtime(true);

            // キューから10件データ取得
            $result = $this->_getSqsMessage();

            // 無ければ処理終了
            if (!isset($result['Messages'])) {
                break;
            }
            $messageList = array_merge($messageList, $result["Messages"]);
        }

        // 処理が正常に行えたメッセージのSQS情報を保持
        $sqsKeys = array();

        // 取れた分全部しゃべらせる
        foreach ($messageList as $k => $message) {
            $mes = $message['Body'];
            p("Speek: ".$mes);
            if($mes){
                $mes = str_replace('"', "", $mes);
                $mes = mb_strimwidth($mes, 0, 140, "・・・以下略");
                // Mac通知センターにメッセージ表示
                $rs = `osascript -e 'display notification "{$mes}" with title "Polly"'`;
                // mp3生成
                $rs = `aws polly synthesize-speech --text "{$mes}" --voice-id Mizuki --output-format mp3 speech.mp3`;
                // 再生
                $rs = `afplay speech.mp3`;
            }

            $sqsKeys[] = array(
                "Id" => $message["MessageId"],
                "ReceiptHandle" => $message['ReceiptHandle'],
            );
        }

        // 全部消す(変換失敗とかあってもスルー)
        foreach (array_chunk($sqsKeys, 10) as $keys) {
            $this->_deleteSqsMessage($keys);
        }
이후 슬랙봇과 API 등으로 SQS에 메시지를 주입하면 무엇이든 할 수 있다.
회사 외부에서 슬랙으로 강제로 회사 내에서 소리 메시지를 울려라!
스케줄러:쉬어!
@all

좋은 웹페이지 즐겨찾기