LoginSignup
3
2

More than 5 years have passed since last update.

AWS Pollyでシステムアラートをしゃべらせてみる

Last updated at Posted at 2017-09-07

(Qiita:team内に去年書いた記事をコピペしてます)

「AWS re:Invent 2016のKeynote 1にて、テキスト読み上げサービス「Amazon Polly」がリリースされました!」との
ことなので、何かに使えないかと考え・・・
とりあえずアラートをしゃべらしたら便利なんじゃないかと思って早速使ってみました。

Pollyについてはこちら↓
http://dev.classmethod.jp/cloud/aws/reinvent2016-new-service-amazon-polly/

構成

社内にリソースグラフを表示する40インチモニタが設置されているので、
そこからしゃべらせればいいと思ったので、こんな感じの構成で構築。

image.png

SQSから全部取って、mp3に変換して再生して、キュー消す

mac上に置いたスクリプトの一部
		// 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);
		}

あとはslackBotやAPIなどでSQSにメッセージをぶち込めばなんでもしゃべる。

社外からSlackで社内に音声メッセージを強制的に響かせられます!
(休みます!とかw)

@all

3
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
3
2