コーポレートブランディング×Alexa スキル『広報プログラマ』

#はじめに
SI企業で働いているナベと言います。
主に、自社オウンドメデイアの運用やサイト製作、デザイン、マーケティング業務を行なっています。

最近、広報業務にも力を入れるようになったので、活動内容と参考になった知識をまとめてみました。

#コーポレートブランディングを行うためには？
コーポレートブランディングの効果的な施策の中に、「Yahoo!トピックを狙う」方法があります。
![2018-11-21_17h37_12.png](https://qiita-image-store.s3.amazonaws.com/0/182799/2043e6e7-3837-a645-6e32-11b1b58e83a6.png)
Yahoo!トピックに掲載された、サービス、商品は爆発的に売れ、全国から注目を得ることができます。
『話題』を、作り出すことさえできれば『広告費0円』で、Yahoo!トピックに掲載される可能性があるのです！

###話題作りのノウハウを一部紹介します(^^)/

■挑む・挑ませる
記録に挑戦する／対決する／公募・検定
例：検定　唐揚検定　http://karaage.ne.jp/kentei/
![2018-11-21_18h10_41.png](https://qiita-image-store.s3.amazonaws.com/0/182799/e898847d-839f-a07a-6f69-5e2520247e7f.png)

■見た目
大きく・大量にする／色・形で差別化する／豪華・高級にする／大使づくり（キャラ、動物）

例：大きく　 道ばたに突如現れた巨大すぎるキーボード　http://ideahack.me/article/250
![2018-11-21_18h05_21.png](https://qiita-image-store.s3.amazonaws.com/0/182799/45ee1965-ecb9-418f-d59b-b55b812d2f6f.png)

例：高級にする　高級チョコボール　http://chocolate5geek.hatenablog.com/entry/2016/04/05/000324
![2018-11-21_18h02_30.png](https://qiita-image-store.s3.amazonaws.com/0/182799/7adae6ee-2b89-38e3-c0a1-a6ba598a4818.png)

■組み合わせ
男女逆転／専門性を極める／異物の足し算／時流を取り込む／再現・復活する／無料にする

例：専門性を極める　19人のIT戦士、島おこしに挑む　http://www.itmedia.co.jp/news/articles/0605/18/news025.html
![2018-11-21_18h28_36.png](https://qiita-image-store.s3.amazonaws.com/0/182799/f24cc88d-3fc4-c162-6cc9-f42d05a750ff.png)

例：異物の足し算　青いラーメン　http://buzz-plus.com/article/2017/02/03/kipposhi/
![2018-11-21_18h07_13.png](https://qiita-image-store.s3.amazonaws.com/0/182799/44d91bfa-d72c-1214-d767-6e23ce4a3a5b.png)

###話題作りは、人々に興味と関心をもたせる事が大切です！！

#小さい話題を作ってみた

参考にさせていただきましたo(^-^)o：https://qiita.com/ikarosu_chihaya/items/5f49ee55508e66e381fd

###会社の受付にAlexaを設置！
〜会社を訪れるお客さんにIT企業感を感じてもらう〜

###index.js作成

※今回は試作スキルなので来訪者を１名に限定して作成。稟議通り次第拡張予定。

```
'use strict';

const Alexa = require('ask-sdk');
const rp = require('request-promise');

// ここら辺に function などの共通処理を追加


// スタートインテント
const LaunchRequestHandler = {
	canHandle(handlerInput) {
			return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
	},
	handle(handlerInput) {
		const speechOutput = '◯◯会社へようこそ。ご用件を伺います。';

		return handlerInput.responseBuilder
			.speak(speechOutput)
			.reprompt(speechOutput)
			.withSimpleCard(speechOutput)
			.getResponse();
	}
}

// カスタムインテントハンドラー (自分で作成したインテントの呼び出し)
const CustomIntentHandler = {
	canHandle(handlerInput) {
		const request = handlerInput.requestEnvelope.request;
		return (request.type === 'IntentRequest'
				&& request.intent.name === 'GetAnswerFromDeliveryIntent')
	},
	handle(handlerInput) {
		const speechOutput = '担当者が参ります。少々お待ちください。';

		// 下記実装がスロット内容を取得する。
		// これは「同義語」を答えても「値」を取得する方法。
    if(request.intent.slots.{}の中身.resolutions.resolutionsPerAuthority[0].values){
			var {} = request.intent.slots.{}の中身.resolutions.resolutionsPerAuthority[0].values[0].value.name;
		}
		
		// ここに WebHook の実装を追加すると対応した発話に関して Slack に投げることが出来ます。
		
const rp = require('request-promise');

// WebHook URL
const WebHook_URL = 'https://hooks.slack.com/services......../WebHook_URL';
const WebHook_URL = 'WebHook_URL';

// Slack に投げるメッセージ
const test_message = '〇〇様が来られました。';

let options = {
		method: 'POST',
		uri: WebHook_URL,//先のslack_webhook
		body: {
				text: test_message
		},
		json: true
};

rp(options).then((response) => {
	console.log('テストメッセージ送信完了');
}, (error) => {
	console.log('error');
});



		return handlerInput.responseBuilder
			.speak(speechOutput)
			.reprompt(speechOutput)
			.withSimpleCard(speechOutput)
			.getResponse();
	}
}


// キャンセル & ストップインテント
const CancelAndStopIntentHandler = {
	canHandle(handlerInput) {
		console.log('called CancelAndStopIntentHandler.canHandle');
		return handlerInput.requestEnvelope.request.type === 'IntentRequest'
			&& (handlerInput.requestEnvelope.request.intent.name === 'AMAZON.CancelIntent'
			||  handlerInput.requestEnvelope.request.intent.name === 'AMAZON.StopIntent');
	},
	handle(handlerInput) {
		console.log('called CancelAndStopIntentHandler.handle');
		return handlerInput.responseBuilder
			.speak('スキルを終了します。')
			.withShouldEndSession(true)
			.getResponse();
	}
}

// エラーハンドラー
const ErrorHandler = {
	canHandle(handlerInput, error) {
			return true;
	},
	handle(handlerInput, error) {
			return handlerInput.responseBuilder
					.speak('エラーが発生しました。')
					.getResponse();
	},
};

// ハンドラーを追加した場合、addRequestHandlers に追加する必要があります。
exports.handler = Alexa.SkillBuilders.standard()
	.addRequestHandlers(LaunchRequestHandler,CustomIntentHandler,CancelAndStopIntentHandler)
  .addErrorHandler(ErrorHandler)
  .lambda();

```

#Slack連携
『Incoming Webhooks』　を利用
https://api.slack.com/incoming-webhooks


#最後に

zipファイルを作成し、lambdaにアップロードしてテストclearなら完成です。

<img width="301" alt="スクリーンショット 2018-12-23 21.35.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/182799/4a4f80bb-3f87-1c38-6e41-66c72754168c.png">

###注意！！！！
zipファイルを作成する際は、格納するファイルを選択し圧縮してください。
圧縮用のファイルは用意しなくてよい。

<img width="554" alt="スクリーンショット 2018-12-23 21.38.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/182799/22b0ad41-bb4b-5dc8-f3af-6b827b6a9a05.png">


***圧縮用のファイルを用意し、そのファイルに格納し圧縮したことで、
lambdaにあげた際、エラーとなり、
３時間詰まりました-_-b　気をつけてください。***

#まとめ
話題は、取り上げられたら勝ちですが、取り上げられなかったら負けです。
まずは、費用をかけることなく、自分のできる事を考え実行してみました。