繰り返しお知らせするリマインダー機能をゴーストにつける方法【伺か・里々忘備録】

繰り返しお知らせするリマインダー機能をゴーストにつける方法里々の記述

ゴーストさんにリマインダー機能をつけるための記述の紹介です。

忘れそうなこと、お知らせしてほしいことをゴーストさんに伝えておくと、一定間隔で繰り返しそのことをお知らせしてくれるようになります。

新しくゴーストをまた作った時に、dicを開いて該当する記述を探さなくていいように覚え書きも兼ねて置いておきます。
どこかで誰かのお役にたてれば幸い!

なおここで紹介しているものは、里々のしおりを使ってゴーストを制作している環境向けの記述です。
里々以外の栞を使っている場合はご注意。

仕様書

まずはじめに、この記述を使うと何ができるようになるのか、なにができないのかを説明しておきます。
さらっと目を通しておくといいかもしれません。

できること

ここでいうリマインダー機能とは、一定時間ごとに、設定したことについて繰り返しお知らせしてくれる機能のことです。

具体的に挙げると、この記述を使うことで以下のようなことができるようになります。

  • お知らせしてもらう項目の設定
  • お知らせしてもらう間隔の設定(30秒おきに~とか)
  • お知らせしてもらうのをやめる
  • 今リマインドしてもらってるものがあるかの確認
  • リマインダー機能の説明をしゃべらせる(これはお好み)

何をお知らせしてもらうかは、ゴースト経由ではなく自分でdicファイルを開いて設定する必要があります。
もちろん、これは文字入力ボックスなどを組み合わせればゴースト経由でお知らせしてほしいことをユーザーが自由に設定する、みたいなこともできるはずです。

また、お知らせしてもらう間隔も設定できます。
30秒おきにおしらせとか、30分おきにお知らせなどなど。
このお知らせ間隔も、ここでは選択肢の中から選ぶ形式ですが、お好みでスライダーなどと組み合わせればユーザーさんが自由に設定できるようになります。

また、今現在リマインドしてもらっているものがあるかどうかの確認もできます。
このリマインダーは里々のタイマー機能を使って動いているものなので、ゴーストの起動と終了を挟んでもリマインドに登録したものが消えないでお知らせされ続ける仕様になってます。
ここらへんの対処法についても詳しくはあとで説明しますが、そんなわけなので今現在リマインド中のものがあるかどうかの確認ができるようになってます。

そしてこれはおまけ機能ですが、リマインダー機能ってなんなのさという説明も表示できるようにしてあります。
この部分は記述しなくてもリマインダー機能自体はちゃんと動くので、お好みで使うなり削るなりしてお使いください。

できないこと

一方で、この記述だけでは、以下のことはできません。

  • お知らせしてくれる時に通知音を鳴らす
  • 2つ以上のことを、別々の時間間隔でお知らせしてもらう
  • 決まった時間ちょうどにお知らせをしてもらう
  • ゴースト終了時にリマインダーも勝手に消してもらう

上記に挙げたものは、この記述だけではできませんが、やろうと思えばすぐにできると思われます。

特に、「決まった時間ちょうどにお知らせする」タイプのリマインダーは、時間をトーク条件に組み込めばすぐに実装できるような気もします。
2つ以上のことを別々の時間間隔(30分ごとと1時間ごと、など)でお知らせするといったものを実装したい場合は、もうちょっと記述をいじる必要がでてくるかもしれませんができないことはないです。

そして、このリマインダーは里々のタイマー機能を使って動いているので、ゴーストの起動と終了を挟んでもリマインダーに登録したものは消えない(解除されない)仕様になっています。
とはいえ、そのままでは不便な気もしたので、ゴースト終了時にリマインダーも自動的に削除する書き方も説明します。

通知音に関しては、おそらく以下の通知音をつける記述と組み合わせれば通知音を鳴らすこともできる気がします。

「トークと同時に通知音を鳴らす」設定を機能別に行う書き方【伺か・里々忘備録】
ゴーストに通知音を設定するための書き方を紹介しています。 できるだけすっきりとした記述になるようにがんばってみました。 念のための前置きとして、ここでいう通知音とは、ゴーストが特定のトークを話す時に通知音として設定した音を鳴らすという機能...

もしリマインダー関連のトークが表示された時に通知音も鳴らしたい!というのがありましたら参考にしてみてくださいませ。

リマインダー機能の記述

さて、ここからはリマインダーの機能をつけるための記述の紹介です。

お好きなdic内に、以下の記述をペタッとコピペしてください。

#=======================================
#リマインダー機能
#=======================================
*リマインダー
:リマインダー機能だよ。
何をお知らせしようか。_買い物に行くこと
_はみがきせかして
_寝るようにせかして_リマインドを削除する
_リマインド間隔を変更する
_今リマインド中のものを確認
_リマインダー機能とは?
_なんでもない

*買い物に行くこと
$リマインドしてもらう内容=買い物に行くこと
$リマインダータイマ【タブ】(リマインダー間隔)
>リマインダー設定完了*はみがきせかして
$リマインドしてもらう内容=はみがき
$リマインダータイマ【タブ】(リマインダー間隔)
>リマインダー設定完了*寝るようにせかして
$リマインドしてもらう内容=寝ること
$リマインダータイマ【タブ】(リマインダー間隔)
>リマインダー設定完了

*リマインダー設定完了
$リマインダータイマ【タブ】(リマインダー間隔)
:わかったよ。
「(リマインドしてもらう内容)」を(リマインダー間隔)秒ごとにお知らせするよ。

*リマインダータイマ
$リマインダータイマ【タブ】(リマインダー間隔)
:お知らせだよ!
「(リマインドしてもらう内容)」をやるんだよ!

*リマインドを削除する
$リマインダータイマ【タブ】0
$リマインドしてもらう内容
:「(リマインドしてもらう内容)」のお知らせをやめるよ。

*リマインド間隔を変更する
:お知らせ間隔を変更するよ。
今は(リマインダー間隔)秒ごとにお知らせしてるよ。

_30秒おき【タブ】リマインダー時間変更_30秒
_10分おき【タブ】リマインダー時間変更_600秒
_1時間おき【タブ】リマインダー時間変更_3600秒

*リマインダー時間変更_30秒
$リマインダー間隔=30
>リマインダー間隔の設定完了

*リマインダー時間変更_600秒
$リマインダー間隔=600
>リマインダー間隔の設定完了_選択肢が秒じゃない時

*リマインダー時間変更_3600秒
$リマインダー間隔=3600
>リマインダー間隔の設定完了_選択肢が秒じゃない時

*リマインダー間隔の設定完了
:(リマインドしてもらう時間変更)秒おきにお知らせだね。
了解だよ。

*リマインダー間隔の設定完了_選択肢が秒じゃない時
:秒でいうと、(リマインドしてもらう時間変更)秒おきにお知らせだね。
了解だよ。

*今リマインド中のものを確認
>リマインド確認【タブ】(変数「リマインドしてもらう内容」の存在)==1
:今はなにもお知らせしていないよ。

*リマインド確認
:今は「(リマインドしてもらう内容)」を、(リマインダー間隔)秒おきに君にお知らせしているよ。

*リマインドしてもらうの説明
:リマインダー機能の説明だよ。

φ【できることφ】
・リマインドしてほしいことの設定
・お知らせ間隔の設定φ(10秒ごとや20分おきなどφ)
・リマインド設定の削除

リマインドする内容によってトークを変えたり(もう寝たら~?とか)、お知らせした回数によってトークを変えたり(これで10回目のお知らせだよ!まだやってないの?とか)、いろいろいじりがいがある気がします。

リマインドする内容によってトークを変えたかったので、ユーザーの入力式にはしなかったというのもあるのですが、入力式にしたとしても文字列検索関連の条件分岐を組み込めばリマインド内容によってトークを変えることもできるようになるはずです。

お好みでいじってお使いくださいませ。

注意点

この記述を使う上で知っておいてほしい仕様といいますか、注意点として置いておきたいのですが、上記のリマインダー機能は、里々で用意されている時間計測の機能を使ってます。

里々のタイマーの機能について詳しく知りたい方は、里々wikiへどうぞ。

この里々のタイマーを使ったリマインダー機能を実装する上で、注意点がふたつほどあります。

  • タイマーは、削除するまで削えない
  • 起動と終了を挟んでも、タイマーは引き継がれる

まず、「繰り返すリマインダー機能」としてループさせるような書き方をしているた、このタイマーは「削除」の指示を出さないと消えません。
つまり、タイマーが終わってもいない状態のまま、自然消滅はしないということです。

そして、そんなわけなので、このタイマーはゴーストさんの起動や終了を挟んでも勝手に解除されたり消えたりすることはありません。

この点について、対処法も含め説明しておきます。

削除するまで消えない

このリマインダー機能で使っているタイマーは、自然消滅しません。
本来なら、タイマーがセットされ、その時間になるとセットされた処理が行われて終了です。
ですが、ここでは「繰り返しお知らせする」という機能を実装するためループ処理にしてあります。

詳しくいうと、一定時間おきに定期的にお知らせをしてもらうために、お知らせのトークにまたタイマーを設置して、無限ループを産み出している、というわけです。

この無限ループの処理が行われているのは、以下のこの部分の記述のことです。

*リマインダータイマ
$リマインダータイマ【タブ】(リマインダー間隔)
:お知らせだよ!
「(リマインドしてもらう内容)」をやるんだよ!

本来なら、タイマー機能は設定された秒数が来たら、繰り返されず終わってくれるのですが、上記のこの記述で再びタイマーをセットしているので、永遠に繰り返されるよってわけです。

これを終わらせるには、メニューから「リマインダーの削除」をする必要があります。
これをするまで消えません。

それでは困る!という場合には、お知らせ回数の上限を決めて、勝手に削除するような書き方をするのもアリです。

せっかくなので、お知らせ回数の上限を決めてタイマーが自然消滅するタイプのリマインダー機能の記述も書いておきます。

*リマインダータイマ
$リマインダータイマ【タブ】(リマインダー間隔)
$リマインダーカウント=(リマインダーカウント)+1
>リマインダー10回目のお知らせ【タブ】(リマインダーカウント)==10
:お知らせだよ!
「(リマインドしてもらう内容)」をやるんだよ!

*リマインダー10回目のお知らせ
$リマインダータイマ【タブ】0
:10回目のお知らせだよ!これが最後のお知らせだよ!
いい加減「(リマインドしてもらう内容)」をやるんだよ!

この記述では、お知らせする回数の上限を10回と指定しています。
なので、10回目のお知らせの時にはタイマーがセットされず、お知らせもこれが最後になる、といった仕組みです。

起動と終了を挟んでも引き継がれる

そしてもうひとつの注意点なのですが、タイマーの残り時間は、ゴーストを終了させても、次回起動した時に引き継がれます。
例えば、タイマーの残り時間が10秒の時にゴーストを終了させた場合、次回起動した時に残り10秒のタイマーがカウントを再開し始める、といったようなイメージ。

つまり、リマインダー設定がされている限り、永遠ループでのお知らせなので、リマインダーを削除しない限りは次の起動時にもお知らせし続けてくれちゃうわけです。

なので、リマインダーを設定したまま終了させたくない場合などは、終了前の分岐にジャンプ>を組み込んで、「リマインダー設定があるよ!削除する?」みたいな確認のトークを入れるのもおすすめです。

お知らせ間隔が短いのは非推奨

最後に、これは注意というよりは念のためといった感じの書置きではありますが……、リマインダーを通知する間隔を短く設定できるようにするのは、あまりおすすめしないでおきます。

というのも、あんまりお知らせ間隔が狭いと、メニューを表示させてリマインダーの削除の設定をしようと思っても、削除の項目にたどり着く前にまたリマインドされてしまって、削除まで行きつけないのでは…?という懸念があるからです。
実際に確認はしてないですが。

どうしても10秒ごととか、短い間隔でのリマインド設定をしたい場合は、リマインドのトーク自体に削除するの選択肢を書いておくのもオススメです。

書いてみると、こんな感じ。

*リマインダータイマ
$リマインダータイマ【タブ】(リマインダー間隔)
:お知らせだよ!
「(リマインドしてもらう内容)」をやるんだよ!
_リマインドを削除する

ただ、上記のように書くことで問題点もあります。
このように書いてしまうと、もしも「選択肢がタイムアウトになった時のトーク」が設定されている場合、このリマインドトークのあとに必ず「選択肢がタイムアウトになった時のトーク」が表示されてしまうのです。
というのも、いわずもがな、トーク内に選択肢が含まれているからですね。

なにか、タイムアウトトークかどこかに分岐をつければいいような気もしますが……。
これに関しては、短時間のお知らせ間隔を用意しなければいいや!などと思ってよく考えてはいないです。
いい感じの対処法をまじめに思いついたら追記します。

コメント

タイトルとURLをコピーしました