カテゴリー別アーカイブ: AWS

kintoneと倉庫番が出会った話、Slackを添えて

kintoneと倉庫番が出会った話、Slackを添えて

これは、 kintone Advent Calendar 2016 10日目の記事です

 

みなさん、kintoneを楽しんでますか?

私は楽しんでおります(^^) kintoneエバ転職もしましたw
案件豊富でカスタマイズネタが尽きないのはやりがいありますねー。

さて話題は変わって、個人的な趣味に「倉庫番」というパズルゲームがありまして、かれこれ30年くらいの付き合いになります。主に解く方で、面の作成はあまりやってません。

解く方では最短手数を追及したりとかしているので、こちらの ランキングページ でも足跡が確認できます。
最近は更新しても申請してないので、ちょっと抜かれたままな面もありますが(苦笑

 

倉庫番伝道師になりました

とまぁ、ネットで倉庫番ネタを色々と書いていたら、最近になって開発元に再捕捉されました。

実は、16年くらい前にも、倉庫番MLなどを運用していた関係で開発元とミーティングしてたり(^^;;;

久々の再会で変わらぬ姿だったという事で、伝道師のオファーが来たというわけです。発売元認定の倉庫番伝道師で、日本で1人だけかな?

いやまぁ、過去には他にも色々と凄い人がいたり、海外にもコアな人がいたので、唯一というよりは初めの一歩な感じです。
ゆくゆくは世界展開も考えております(ぉぃ

 

面データ

倉庫番はパズルゲームなので、データベース的な管理もしています。
面の形、最短手数・手順、収録ソフト・ステージ数、作成者、などなど。。。

で、データベース的な管理を更に強化という事で、サンプルデータを貰ってkintoneへ入れてみました。フィールドとかプロセスとかも少々設定してみたり。

実は、面データって世界中から投稿があったりするのですが、解法を付けないで送ってくる人もいるらしく、色々と管理が大変なんですね。
そこで、プロセス管理を使い、面データの状態管理などをテーマに開発元に提案とかをしてみたりなど。

当然、手弁当で無償ですけどね(^^)

 

ChatBotコンテストがあったそうな

軽い紹介は こちら から、どうぞ。

でまぁ、
* 面データはkintoneに入っている
* Slack面白そう
* Lambdaでサーバーレス!
と揃ったので、色々と機能を作ってコンテストに応募してみました。
応募ページ

実際の動きは、 Youtube で見れます。

何が出来るのか

簡単に言うと、kintoneにログインしなくても、データの参照・追加・更新などが出来ます。あら便利。

Lambdaで時間がかかる処理の場合ではSlack側を待たせるとエラーになってしまうので、SQSを間に挟んで結果を投稿するような仕組みもついでに作りました。
Slack → Lambda → SQS  Lambda → SLack みたいな感じです。
15分に一回、SQSを取得して処理をします。最大で同時に10処理で、1処理内で120並列とかやってみました。結構楽しかったです。

これにより、Slcak側から指示出すと、長めな処理を実行して結果をkintoneへ保存して、終了通知や結果をSlackでお知らせという事も出来るようになります。
あら、マジで便利じゃね?

なお、ソースはこちらw GitHub – slack_contest_aws

 

終わりに

kintoneの外部連携は、組み合わせによって無限の可能性を感じるので、みなさんも自分のライフワークにkintoneをPPAPしてみましょう!

Twilioで受けた電話の着信履歴を、APIGatewayだけでkintoneに保存

ふと思った

 

Twilio使って、電話申し込みを受け付ける場合で「電話番号だけ取得すればいい」というケースってありますよね?
でまぁ、Twilioからサーバー経由でkintoneに着信情報を保存とかで出来るわけです。t2k_01

 

最近だと、サーバーレスアーキテクチャという事で、
t2k_02

こんな構成がよくありますよね。

でも、この前、こんなサイトを見つけまして。。。
Kintone_REST_APIを呼ぶAmazon_APIGatewayをCloudFormationで作る_-_Qiitahttp://qiita.com/monamu/items/5fb59ac0d747b8db09c4

いやまぁ、「ズンドコキヨシ」のリンクを追っかけてて気づいたんですけどね(汗

あ、Kが大文字・・・

kintoneへAPIGatewayから直接POST出来るなら、Twilioからも出来るよね!

t2k_03

という事で試してみました。

 

実際にやってみよう

 

Integration Requestでは、こんな変換が必要t2k_04

あと、受け取ったのを再マッピングで、こんな感じ名称未設定

これを、こんな風にマッピング。
API_Gateway

ここまでで、kintoneへ通話履歴を追加する事ができます。・・・たぶん、出来るはずです。。。

 

まだ足りない

 

このままだと、Twilio側はTwiMLが返ってこないので、いきなり回線が切れたり、アプリケーションエラーとか言われたりなど、使う上ではちょっと問題があります。

なので、TwiMLを返せるようにもう少し修正します。

kintoneにレコード追加した場合のレスポンスは、

{"id":"21","revision":"1"}

という感じなので、TwiMLには使えそうにありません。しかもjsonで返ってくるので、application/xmlに変換する必要もあります。
なので、こんな感じで、Integration Responseに追加します。API_Gateway

あと、Response Modelにもapplication/xmlを設定しておく必要があります。多分。API_Gateway

というか、この辺は理解が浅いので、間違ってるかもです。ちゃんとしたのがあれば教えてくだされー

でまぁ、ここまで出来れば、
・電話を受け付けて発信元番号を記録
ってのが、超サーバーレスで実現します。

こうして作ったアプリに、プロ生Twilioデモ_-_レコードの一覧
みたいな、一括発信ボタンを配置すれば、無敵ですね!

このボタンの詳細は、プロ生を見た人だけが知っていたり。
http://pronama.azurewebsites.net/2016/05/28/pronama-41-at-matsuyama/

 

ちなみに、APIGatewayをもう1つ作れば、プッシュでアンケートも出来ますね。更には、kintoneからGETして喋らせるのも出来るはず。多分。
それを、Cloudformationで一括作成できるので、構築が楽で良い事づくめ!

Lambdaを使った構成で、これと同じなのを作ってはいるのですが、やはりやってみたくて手を出してしましました(^^;;
Lambdaで作ったほうが100倍速いとかいうツッコミは聞こえません(ぉ

Twilio x AWS x kintone の組み合わせは可能性無限大で楽しいですね。おすすめ。

サーバーを引越しました

事の起こり

ある時、ホームページが落ちていることに気がついた。正確には、TOPページは表示されるけど個別ページを見に行くとエラーで表示されないというもの。

再起動すると復活するけど、しばらくすると同じようにエラーになる。そして、管理画面に行こうとするとnginxのエラー画面が。。。

あれ? これって、t1.microでトラブったあれか?
AMIMOTOでT1からT1へのお引越し

問い合わせてみると、「HHVMでt2.microだとメモリ足りません」的な回答が。なるほど、引越しだな!

 

よし、移行ついでにSSLだ

あれですな、HTTP/2とかでSSLってやつですよ(←よくわかってない

AMIMOTO + SSL(Let’s Encrypt)= HTTP/2

うむ。

手順途中で迷子になる(笑

なんか、基本的なところで勘違いしてるに違いないと、4回目の失敗でサジ投げるw

smallで逃げる

これではいかんと、元のインスタンスサイズを上げて対応してみたが、やはり定期的に死んじゃう(涙

料金倍増でも死ぬって何の苦行だw

死活監視でしょ!

Lambdaでページチェックを定期実行して200じゃなければslackへ通知だよね! 通知来たら再起動って流れでどうだ!Lambda_Management_Console

インスタンスのステータスも2/2で正常だし、こういう場合にcloudwatchで使えるメトリクス無いんだよなぁ。。。カスタムなの作るのはハードル高いしねぇ。

結果はブラウザから見れないにもかかわらず、、、
”kintone スモールオフィスシリーズ 「kintone 050オフィス」: http://okiyasu.biz/?p=541 にアクセスして HTTP 200 が返ってきました. 通知はスキップします”

あ、だめだ、チェックできてないw

あ、cloudwatchで自動rebootだな

定期チェックで低い負荷がかかってるので、CPU負荷が閾値下回ったら再起動で良いんじゃない? という、個人ブログなので、適当な感じで自動rebootするようにしてみたら、何とかなりました。

以前と同じくエラーにはなるけど、チェック→再起動が自動で走るので、長時間落ちてることは無くなった感じ。

WooCommerce?

とはいえ、このままではいかんと思い再度挑戦するべくみてみると・・・・、あれ、前のAMIが使用終了になってる。
聞いてみると、新しいAMIMOTOは全てHTTP/2対応なので、どれ選んでも大丈夫との事。

うむ、一度普通にインスタンス立ててみよう!

WooCommerce Powered by AMIMOTO (Apache HTTPD PHP7)
ついでにWooCommerceをだね、、、、すみません、設定項目多くてうまく動きませんでしたw

まぁ、何かの時にー。

移行作業

元WordPressの管理画面から、ツールでエクスポートして内容をバックアップ。新しいWordPressへインポートしてみると、画像を自動読み込みとかのチェックを発見!

ほほぅ、これで画像の移動でsftpで接続とかの手順がなくても大丈夫なのねー。と、やってみると、新しいインスタンスのIPで書き換わってしまいましたw

なるほど、サイトAからサイトBに移行する場合とかには良いけど、サイトAを別インスタンスのサイトAにする場合は細工が必要なのか!

次回、ちゃんとしようね>自分

安定のt2.micro

という事で、おなじみのt2.microで再出発です。タイトルも3rdになっておりますw

まぁ、画像とかをS3保存にして、DBをRDSに持っていけば、ELBでオートスケール出来るといえばそうなんですけどねー。なんかのタイミングで色々と対応してみたいと思います。

実は業務でホームページ作成とかやってない(どころか、AWS自体を仕事で使わせてくれない)ので、こうやって定期的に移行作業とかやるのが丁度いい練習になります。

作業レベルが甘いんですけどねー(爆

Amazon Machine Learningって、リアルタイム予測とかあったのねー

かなりやっつけな感じなので、ザックリ書いてみる。

プロローグ

FaceBook見ていたら、こんなのが流れてきました。

SORACOM Beam + AWS IoT + Amazon Machine Learningで予防保守

読んでいたら、こんな説明が。

Raspberry PiからセンサーデータをSORACOM経由でAWS IoTにデータを送信します。
Amazon Machine Learningでは、あらかじめセンサーのデータと故障状態を示す教師データからモデルを作成しておき、リアルタイム予測APIが有効にします。
AWS IoTにセンサーデータが到着するとAWS IoTのルール上でAmazon Machine Learningのリアルタイム予測APIへ問い合わせを実行し、故障と判定されるとSNSでアラートを送信します。

リアルタイム予測APIが有効

リアルタイム予測APIが有効

リアルタイム予測APIが有効

 

な、なんだってーー!!!

全然気づいてなかった。。。。。これは早速試さねば。

 

準備

作成済みのモデルを元にリアルタイム予測APIを作成と言う事らしいので、その辺は元記事を参考にしてください。

で、API Gatewayなどなどの設定も済んでるという所から進めます(ぉ

リアルタイムで予想ということは、元の値を色々変えたり、何かと連動したりと、色々と使えそうな感じがしたのでkintoneと繋げてみました。リアルタイム客数予想_-_1_-_レコードの詳細

あら、もう出来た。
kintoneは素早く出来て良いですね!

 

使ってみよう

ボタンを押すと、予測データを使って予測客数を表示します。リアルタイム客数予想_-_1_-_レコードの詳細

 

で、データを変更して、予測客数がどうなるかを試してみました。

 


 

雨だったら?
リアルタイム客数予想_-_1_-_レコードの詳細


 

日付を変えてみたら?リアルタイム客数予想_-_1_-_レコードの詳細


という事で、販促計画立てるときの指標として使えそうな感じですね。

月に一回ぐらいモデル作り変えてたら、大体は追随出来そうな気がするので、作成・維持費用は300円/月くらいかな。

興味のある人は試してみましょうー。
「面倒だから代わりにやって」とかもお待ちしてますw

 

kintoneテラス案内

現在、「kintoneテラス」という無料相談会を開催しております。

主に、kintoneを使っての業務改善のご相談を受け付けておりますが、クラウドサービスのAWSやEXCELでのお困りごとなどのご相談にも対応しております。

kintoneテラスは事前予約制となっておりますので、以下のサイトからお申し込みください。

kintoneテラス予約ページキャプチャ

なお、予約申し込み時には、相談内容をご記入ください。
システムの都合上、何も書き加えない場合はエラーとなり予約ができないようになっております。

 

開催場所の地図はこちらになります。(クリックするとGoogleMapが開きます)キャプチャ_地図

皆様のお越しをお待ちしております。

Amazon Machine Learningで客数予想をしてみよう

イントロ

機械学習とか流行りですよねー。
AWSにもMachine Learningっていうサービスがあり、データを入れるだけで予想ができるようです。

ふーん、それは、俺が作ったEXCEL予測シートを超えるのか〜い?

 

と、無駄な対抗心が出てきたので試してみました。

 

準備

まずは、学習する日別客数を用意します。
だいたい、皆さんのHDDにはEXCELファイルで売上管理表とかがあると思いますので(えっ?)、それを使います。データの日付が10年前なのが、昔はスーパー経営してたんだぜー、的な時代を感じさせますねー。(しみじみ

weekday kyaku long seika fes posting newsp living weather year month day
Sun 302 1 0 0 0 0 0 rain 2006 10 1
Mon 326 1 0 0 0 0 0 sun 2006 10 2
Tue 294 1 0 0 0 0 0 sun 2006 10 3
Wed 317 1 0 0 0 0 0 sun 2006 10 4
Thu 269 1 0 0 0 0 0 rain 2006 10 5

この日別データを、学習用として1つ。そして予測したい日のデータとして1つ用意してください。

例としては、2014/01〜2015/12のデータを用意して、2016/01の予測をおこなう。みたいな感じです。

注意点として、データの一番上に見出しは英数字にしておく必要があります。また、各項目は0/1の分類なのか、数値なのかなどを考えておいたほうが良いです。

 

Machine Learningの使い方

準備

01初期画面

「Get started」から処理を始めます。この際、リージョンは、バージニア北部とアイルランドしか選べないので注意して下さい。

02スタート

データソース指定&モデル作成

03データ指定

この画面で学習データを指定します。データをまだ保存していない場合は、次の説明を参考に保存して下さい。

学習データ・予測データをS3へ保存

04S3バケット作成

S3にデータを保存します。バケットがない場合は作成からお願いします。なお、S3のパーミッションを設定していなかった場合は、YESを押すと自動的に設定されます。

05学習データ読み込み

 

データソース指定完了

06学習データ読み込み完了

 

スキーマ指定07スキーマ指定

ここでは各項目のデータタイプを指定します。結構重要なので、色々と変えて結果を比較することをおすすめしますよー

ターゲット指定08予測項目指定

予測する項目を指定します。
検索で一覧を絞り込みできるので、見間違いを軽減できますね!

ID指定09識別子指定

IDがある場合は指定可能です。IDに指定しておけば、学習に使わないとか書いているような?

確認画面10確認画面

データの設定を確認します。

MLモデルの設定11予測モデル指定

どういう方式で予測するかを決めます。客数予想の場合、デフォルトで大丈夫です。

確認画面12最終確認

MLモデルがデフォルトの場合はこれで完了です。

なお、作成完了までには結構時間がかかります。特に最後の1つが時間がかかるので、時々Refreshしながらお待ち下さい。

その間に、予測に使うデータのほうを読み込んでおくと時間短縮になります。先ほどと手順は同じですが、ターゲットの指定はなしになります。

13モデル作成〜evalition途中

予測開始

14予測開始

メニューを選びます。

予測作成開始

予測を作成します。15予想作成

モデルを選びます。16モデル選択

確認17確認

予測データを選びます。18予測データ指定

確認19予測データ確認

結果出力先を指定します。20保存先指定

作業完了21完了画面

あとはひたすら結果待ちです。

出力結果を確認

22保存データ確認

出来上がると、S3にデータが保存されていることが確認できます。

中にあるファイルをダウンロードし、数値の一覧を確認して実際と比較すると。

スクリーンショット_2016_03_08_17_29

こんな感じ。誤差20%以内なら100%的中。誤差10%以内で80%的中かな。

まぁ、もっと試してみないと分からないから、色々とやってみよう。

 

kintone スモールオフィスシリーズ「現場指示勤怠管理 テルメール」

ご挨拶

外回りの営業担当者や作業現場に少人数でいくチームなど、組織内での人の動きが分散して把握しづらくなっています。

そこで、メールと電話とkintoneを使って、作業指示や連絡などが手軽に出来るような仕組みをご提案します。

 

概要

作業指示はメールの文章でおこない、作業開始や連絡は電話でおこないます。
これにより、再確認が必要な情報と、リアルタイムな反応が必要な情報を最適な連絡手段でおこなうことができます。

 

業務指示

通常のメールでおこないます。いつもお使いいただいているメールソフトをご使用いただけます。また、送信したメールは、各担当者ごとに送信履歴が表示されます。

テルメール_詳細

作業開始と終了

作業開始報告用電話番号に電話していただくことで時間が記録されます。開始時と終了時の番号を分けることで、ボタン操作なしで記録が可能です。

テルメール_一覧

専用の番号を用意するため、終了時間が固まった時に管理者に負担が発生しません。また、終了時に報告がある場合は、電話した時にメッセージを記録していただければ、kintoneで確認可能です。

 

よくあるケース

予定通りの時間に現場に着いているかを管理するのが大変

各担当者が作業開始時に、作業開始報告用電話番号に連絡してもらうことで、各担当者のステータスが作業開始に変更になります。

作業開始報告用電話番号は同時に複数からかかってきても話し中にはなりません。同じ時間帯に作業が開始する場合でも問題なくお使いいただけます。

 

10人くらいが別々に動いていて管理者は1人。連絡しようにも管理者に電話が繋がらない

管理者へ連絡しようにも、他の人と話し中の場合は連絡がつかない事があります。

管理者を呼び出しても繋がらない場合、自動的に留守番電話になりメッセージを残す事ができます。
管理者はkintoneの画面で録音履歴を確認する事ができます。

 

料金

現在、ベータ版ですので料金についてはお問い合わせください。

また、転送にかかる通話料金は、お客様負担となります。

免責

kintone及びTwilioを利用しているため、それぞれのメンテナンス期間は機能が使用できません。

kintone及びTwilioのバージョンアップなどに伴い改修の必要が発生した場合は、影響範囲の調査などを行い対応いたします。調査の結果、対応を見送ることもあります。

 

kintone スモールオフィスシリーズ 「kintone 050オフィス」

ご挨拶

kintoneをお使いの全国数千万のユーザーの皆様、こんにちは。
今回は、kintoneの利活用として、外出先の携帯からでも事務所にいるように電話が出来る「kintone 050オフィス」をご提案いたします。

概要

050から始まる番号を事務所の電話番号として用意します。その番号に着信があった場合は、登録されている携帯電話番号へ転送致します。

また、登録されている携帯電話番号から050の番号へ発信すると、電話転送モードになります。メッセージにしたがい相手の電話番号を入力すると、050から発信した通話として機能します。

機能

  • 電話転送機能

通話録音設定

050に着信があった場合、呼び出し電話番号へ転送します。

 

  • 営業時間外留守番機能

営業時間指定

「受付開始時間」から「受付終了時間」以外に着信があった場合、「時間外メッセージ」を再生しメッセージ録音になります。

 

  • 050発信機能

登録されている「呼び出し電話番号」から、番号通知で「受信電話番号」へかけた場合のみ、050発信機能が作動します。
メッセージに従い相手の電話番号を入力して#を押すと、相手側には「受信電話番号」から電話がかかってきたように表示されます。

「呼び出し電話番号」は通知されませんので、事務所からかけたような運用が可能です。

 

  • 通話履歴機能

通話履歴_一覧

通話履歴は自動的に保存されます。
月別通話件数などのグラフや営業時間内外の対比など、通話履歴を様々な用途で分析可能です。

  • 通話録音機能

録音履歴

通話履歴にも録音データへのリンクが設定されていますが、録音履歴だけでも別途アプリをご用意しています。CallStatusなど通話の状況をご確認されたい場合は、こちらをご利用ください。

料金

現在、ベータ版ですので料金についてはお問い合わせください。

また、転送にかかる通話料金は、お客様負担となります。

 

免責

kintone及びTwilioを利用しているため、それぞれのメンテナンス期間は機能が使用できません。

kintone及びTwilioのバージョンアップなどに伴い改修の必要が発生した場合は、影響範囲の調査などを行い対応いたします。調査の結果、対応を見送ることもあります。

 

kintone用 グループ表示切り替えプラグイン 作りました

[direct-stripe type=”subscribe” amount=”monthly-plan” coupon=”first-month-50″ description=”月額支払い” label=”定期支払” panellabel=”That’s it”]

概要

WEBページでよく見る、ラジオボタンを変更すると表示フォームが切り替わる動きを、kintoneの入力画面で実現します。これにより、アンケートなどの入力画面で属性ごとに入力項目を変える事が可能です。

ラジオボタンで項目を選択すると対応するグループが表示され、その他のグループは非表示となります。ラジオボタンは最大で3つまで設定が可能で、各ラジオボタンには最大で1000個までの選択肢が設定可能です。

実際の画面はこの様になり、ラジオボタンの項目を変更するとグループが切り替わります。
アンケート1

詳しくは、こちらのページ をご覧ください。

Twilio – API Gateway – Lambda – kintone と繋いで、応答メッセージを楽に変えてみよう

これは、Twilio Advent Calendar 2015の12月17日の記事です。

さいしょに

この記事は、

kintone Advent Calendar 2015の2日目の、
kintone APIを使ってスペースを有効活用する(サーバーレスで)

と、

Twilio Advent Calendar 2015の9日目の、
Twilioサーバーレス化作業記録 – RequestURLもサーバーレス化

に刺激されて作りました。ソースとかはコピペ満載なので、ふいんき(何故か変換できない)をお楽しみ下さい。

リカちゃん電話運用サービスを作る

基本的な流れ。

1 決まった番号に電話する
2 応答メッセージが流れる

  • メッセージは管理画面から差し替え
  • MP3と合成音声のどちらでも可
  • 特別な場合に備えて、生TwiMLも可にした

kintone側の準備

1 アプリの作成フォーム

受付番号には、Twilioの番号を入力します。これで識別するので+付きの番号になります。理論上は何番号でも運用可能!

応答パターンを切り替えることで、何で返すかを選ぶことができます。その他はテキストでオッケー。MP3の場所もURLをテキスト入力です。MP3の置き場として今回はS3を用意しましたが、転送費用とかが気になる場合は別サーバーをお勧めします。

API Gateway & Lambdaの準備

Twilioサーバーレス化作業記録 – RequestURLもサーバーレス化 で紹介されている方法でお願いします。まずはLambdaのサンプルメッセージが返ってくるのを試してください。

Lambdaで、ソース修正

kintone APIを使ってスペースを有効活用する(サーバーレスで) で紹介されているソースを参考に、アプリIDやドメインを自分の環境の数値にしてください。Twilio-telservice_-_NetBeans_IDE_8_0_2

次に、アプリ内のフィールド情報を指定していきます。Twilio-telservice_-_NetBeans_IDE_8_0_2 2
body_getsalesamountの方だけ修正してください。ポイントは、Twilioの番号で検索する事と、必要なフィールドの指定を間違えない事です。

kintone側に番号が登録されてない場合の別メッセージを変更できるように、ダミーで111という番号を使うようになっています。この辺は、申し込みサイトへの誘導とか色々とできそうですね。

最後にレコードの内容からTwiMLを作成します。Twilio-telservice_-_NetBeans_IDE_8_0_2 3

以上で、作業は終わりです。

 

kintone側にこんな感じで入力しておくと、対応したメッセージを返します。通常は音声案内で、時間限定イベントで秘密のメッセージ流してとかができますね。テレフォンサービス_-_レコードの一覧

 

という感じですが、他に色々と繋ぐと楽しめそうなので、次はAmazonギフト券と繋いでみます(ぉ