LINE BOTで遊んだのでメモ

LINE BOTで遊んだのでメモ

1. ビジネスアカウント(Botアカウント)を作成する
LINE for Business | LINE Marketing Solutionsにアクセスして、ビジネスアカウントを作成します。
有料版もありますが、今回は未承認無料版でのアカウントを作成しました。


2.Bot設定をする
アカウントを作成してログインすると次のような画面が出てきます。
f:id:harucharuru:20200716162628p:plain

上のバーにあるResponse mode : Bot Accountsをクリックします
f:id:harucharuru:20200716162734p:plain

すると次のような画面が出てきますので、下の「To use Messaging API, activate it first here.」を選択します
f:id:harucharuru:20200716162817p:plain

「Enable Messaging API」を選択してMessaging APIを許可します
f:id:harucharuru:20200716163008p:plain

次のような画面が出てきたら、個人のLINEアカウントと関連づける必要がありますで、次の画面に従ってMessaging APIを使用できるようにしてください
f:id:harucharuru:20200716163027p:plain

うまくできなかったら、以下のリンクを参考にしてみてください
LINE公式アカウントのビジネスアカウントで、Messaging APIが利用できない場合の対処法 – Lステップマニュアル

そして、Messaging APIが登録できると次のようになります
f:id:harucharuru:20200716164045p:plain


3.次に自動応答をやめます
自動応答で帰ってくる文章を止めるには「Response settings」をOFFにする必要があります。
f:id:harucharuru:20200716165405p:plain
Auto-responseは、Disabled
Webhooksは、Enabledにします。


4.Google Apps Script作成
Googleでプログラムを作成します。そこで、Google Driveにアクセスして、Google Apps Script作成します。
f:id:harucharuru:20200716165635p:plain
そして、以下のブログを参考に作成します。
LINE BOTをGASで作成 - Qiita
Google Apps ScriptでLINE BOTつくったら30分で動かせた件 - Qiita
コードの反映には時間かかるそうなので、(2~3時間?)気長に待ちましょう

ここで出てくるアクセストークンは、ここで作成することができます
f:id:harucharuru:20200716175313p:plain


5.Botに追加されたときに返答するメッセージは、Greeting messageより
f:id:harucharuru:20200716170134p:plain



6.終わり!


ちなみにLINE notifyLINEを使ったGoogleカレンダー連携もしました。

rename(…): No such file or directory と言われたときにとる方法

CakePHPで、
rename(…): No such file or directory [APP/Plugin/Upload/Model/Behavior/UploadBehavior.php, line 362]
というエラーが出たときの対処メモ
f:id:harucharuru:20200716105650p:plain


このエラーに関する物を検索してみたところ次のようなサイトが出てきました
ディレクトリが存在するにもかかわらず、『No such file or directory』エラーが出る - [PHP + PHP] ぺんたん info
phpのrename関数についてrename関数を用いて画像ファイルを移動させよう... - Yahoo!知恵袋

そのほか海外のサイトもありましたが、うまくいかず。
パーミッションは、問題なく動作しているサイトと同じものであることを確認したので、問題ないと思っていました。

最終的な結論としては、php.iniの最大アップロード容量が足りなかったと言うことでした。
これはアクセスエラーログから確認して分かったことでした

f:id:harucharuru:20200716110244p:plain
cat /var/log/httpd/エラーログ

ということで、以下のサイトを参考にしてphp.iniの内容を変更し、webサーバをリスタートしたら問題なくアップロードできました。
ファイルのアップロード数、最大サイズの設定 - Qiita

# vi /etc/php.ini 
# systemctl restart httpd.service

ImageMagickのインストール(Mac)と利用

メモです

インストール環境

% sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.5
BuildVersion:	19F101
% brew install imagemagick

Updating Homebrew...
はとても時間がかかりました.


epsへの画像変換

convert 変換対象画像 変換対象後画像

の順に記入します.epsへの変換の場合は,以下のような形が良い

convert p001_f.png eps2:p001_f.eps  


参考
mac にImageMagickをインストールし、convertコマンドで画像を縮小する。 - Qiita
ImageMagickでepsファイルを作成 - Qiita

Androidカメラを使用する

備忘録です。

Androidアプリを作るときに、既存のカメラアプリを起動させるプログラムはすぐに見つかったのですが、
カメラをアプリ内で利用するものが見つからず、友達が教えてくれたCamera2でいけました。

手順
・Android5以上のプロジェクト立ち上げ
・参考サイトのQiitaのページにあるプログラムをそのまま基本的には転用
 ->このままだとエミュレータ内に保存される
 f:id:harucharuru:20200526141604p:plain:h480
・保存場所を本体orSDに変更
 *今ここ


参考にしたサイト
Android の Camera2 API を使って 動画を撮影する - Qiita
android.hardware.camera2  |  Android Developers
Android MediaRecorderで録画する | TechBooster

他のサーバからcakePHPデータを移動したときにやること

cakephpで作ったデータを移動させるときに行うことメモです。

パーミッションの変更

$ cd www
$ chmod -R 777 lib/Cake/Cache/
$ cd app
$ chmod -R 777 tmp/

データベース連携

$ chmod 775 Console/cake
$ Console/cake bake

レイアウトが崩れたらやること

$ chmod -R 777 webroot/css/
$ rm tmp/cache/_admin.less.cache

php省略形許可

時々、

<?php ?>

<? ?><?= ?>

にしていて、エラーが出ることがあります。に直した方がいいのですが、サーバとして省略形を可能にする方法もあります。
管理者権限で

# vi /etc/php.ini 

211行目をコメントアウト
f:id:harucharuru:20200320105945p:plain
サーバ再起動

# systemctl restart httpd.service 

で可能です。

参考サイト
PHP省略タグについて - 新しい日記
もういい加減覚えよう。php.iniはどこにあるのか - Qiita

Alexaとお友達になりたい①食事管理アプリ作成

Google Homeの次はアレクサです。

準備

Amazon開発者ポータルにアクセス
f:id:harucharuru:20200309113045p:plain

Alexaを選択。Alexaスキルの開発を始めるをクリック。
f:id:harucharuru:20200309113111p:plain

アカウントを持っていたらログイン、持っていなかったらAmazon開発者ポータルへの登録し、ログイン。

スキル開発準備

機能やアプリケーションをスキルと言っています。そこで新しいスキルを作成していきます。
f:id:harucharuru:20200309113502p:plain

今回は食事管理アプリを自由に作成していきたいので
スキル名:食事管理
言語:日本語
スキルに追加するモデルを選択:カスタム
スキルのバックエンドリソースをホスティングする方法を選択:Alexahostを利用します。
f:id:harucharuru:20200309113717p:plain

スキルに追加するテンプレートを選択では、cake wallを選択しました。
今回、DBとの連携を行いたいと考えているので。。。
f:id:harucharuru:20200311203404p:plain

f:id:harucharuru:20200311203433p:plain
こんな感じの画面が出てきました。
f:id:harucharuru:20200311203735p:plain

スキル開発

呼び出し名の設定

呼び出し名の設定は、呼び出し名 で変更できます。変更後は必ず[モデルをビルド]を押しましょう。
f:id:harucharuru:20200311203953p:plain

Alexシミュレータでの現状確認

メニューバーのテストを選択し、開いたページから非公開を開発中にします。これで、シミュレータでの現状確認ができます。
f:id:harucharuru:20200311204150p:plain

このように出てくればOK
f:id:harucharuru:20200311204348p:plain

初めと終わり、どんなことができるか聞かれた時の文章を日本語に変更

現在、シミュレータでの動作でも確認できたように、アレクサは英語で返答するようになっています。
そこをコードエディタから日本語に変更していきます。
f:id:harucharuru:20200311204913p:plain

初め

スキルが始まった時に動作するのが、LaunchRequestHandlerです。
以下のように変更しました。
f:id:harucharuru:20200311205343p:plain

どんなことができるのか?

どんなことができるのか聞かれた時に動作するのが、HelpIntentHandlerです。以下のように変更しました。
f:id:harucharuru:20200311205429p:plain

最後

終わる時に時に動作するのが、CancelOrStopIntentHandlerです。以下のように変更しました。
f:id:harucharuru:20200311205554p:plain

聞き取れなかった時

聞き取れなかった時に動作するのが、CatchAllExceptionHandlerです。以下のように変更しました。
f:id:harucharuru:20200311205718p:plain

以上の変更を保存して、もう一度シミュレータで試してみます。
日本語になりました。
f:id:harucharuru:20200311210014p:plain