サンプルアクション「Voice_Chat」の説明~ SOCKET SERVER 'HAL'

サンプルアクション「Voice_Chat」は、簡単な雑談をするサンプルアクションです。

アクションの導入方法は、

サンプルアクション「Voice_Chat」の説明

 サンプルアクション「Voice_Chat」は、簡単な雑談をするサンプルアクションです。

 特に難しいことはしていません。音声入力に対して、乱数または時間で、応答メッセージにバリエーションを持たせています。

ソースコード

Chat.yml

## Chat YAML.
---
-
type: "ありがとう?"
do: "chat_thanx"
-
type: "(今日)?は?疲れた(よ|ね)?"
do: "chat_tired"
-
type: "おはよう?"
do: "chat_good_morning"
-
type: "おやすみ?"
do: "chat_good_night"
-
type: "\\A(あなた|お前|君)は?誰\\z"
do: "who_are_you"

Chat.php

<?php
/* *
*
* socket server HAL v2.0
*
* (c) 2016 Katsuhiko Miki
*
* */
namespace Feijoa\HAL\Action\Voice;
use Feijoa\HAL as HALSYS;

class Chat extends HALSYS\Action\BaseAction
{

/**
* 呼び出し元クラス名を返すImplementsメソッド
*
* @return string // クラス名
*/
public static function getClass(){ return __CLASS__; }

/**
* インターバル毎のイベント
*
* @param \Feijoa\HAL\HALDto $dto
*/
public static function sensor(HALSYS\HALDto $dto)
{
}

/**
* ありがとう
*
* @param \Feijoa\HAL\HALDto $dto
*/
public static function chat_thanx(HALSYS\HALDto $dto, $read_sock)
{
$rand = mt_rand(1, 3);
switch(true){
case $rand === 1:
self::say($dto, "thanx1", "あなたのパートナーとして、当たり前のことです");
break;
case $rand === 2:
self::say($dto, "thanx2", "そう言っていただけるとうれしいです");
break;
default:
self::say($dto, "thanx3", "どういたしまして");
break;
}
}

/**
* 疲れた
*
* @param \Feijoa\HAL\HALDto $dto
*/
public static function chat_tired(HALSYS\HALDto $dto, $read_sock)
{
$rand = mt_rand(1, 2);
switch(true){
case $rand === 1:
self::say($dto, "i_am_tired_1", "大丈夫ですか?ゆっくり休んでください");
break;
default:
self::say($dto, "i_am_tired_2", "お疲れ様でした。ビールでも飲んでゆっくりしましょう");
break;
}
}

public static function chat_good_morning(HALSYS\HALDto $dto, $read_sock)
{
$time = (int)date("Hi");
if($time < 400){
self::say($dto, "morning_0", "まだ深夜のようですが、よく眠れませんでしたか?");
} else if($time < 600){
self::say($dto, "morning_1", "おはようございます。随分お早いですね");
} else if($time < 900){
self::say($dto, "morning_2", "おはようございます。");
} else if($time < 1000){
self::say($dto, "morning_3", "おはようございます。今日はゆっくりですね");
} else if($time < 1200){
self::say($dto, "morning_4", "おはようというには遅すぎるきがします");
} else if($time < 2359){
self::say($dto, "morning_5", "どうお返事したら良いのか迷います");
}
}

public static function chat_good_night(HALSYS\HALDto $dto, $read_sock)
{
$time = (int)date("Hi");
if($time < 400){
self::say($dto, "good_night_0", "遅くまでお疲れ様でした。ゆっくりお休みください");
} else if($time < 1900){
self::say($dto, "good_night_1", "変わった時間におやすみになるのですね");
} else if($time < 2100){
self::say($dto, "good_night_2", "お早いおやすみですね。ゆっくりお休みください");
} else {
self::say($dto, "good_night_3", "おやすみなさい");
}
}

public static function who_are_you(HALSYS\HALDto $dto, $read_sock, $args)
{
self::say($dto, "who_are_you", "わたしは:@NAMEです");
}
}

Chat.julius.yml

## Chat Julius YAML.
---
rules:
- "SINGLE"
- "ZATSUDAN_"
- "WHAT_ ZATSUDAN_"
- "YOU_ WHO"
alias:
ZATSUDAN_:
- "ZATSUDAN"
- "ZATSUDAN NE"
- "ZATSUDAN YO"
WHAT_:
- "WHAT"
- "WHAT HA"
- "WHAT MO"
YOU_:
- "YOU"
- "YOU HA"
words:
SINGLE:
-
word: "ありがとう"
kana: "アリガトウ"
-
word: "おはよう"
kana: "オハヨウ"
-
word: "おやすみ"
kana: "オヤスミ"
WHAT:
-
word: "今日"
kana: "キョウ"
ZATSUDAN:
-
word: "疲れた"
kana: "ツカレタ"
YOU:
-
word: "あなた"
kana: "アナタ"
-
word: "お前"
kana: "オマエ"
-
word: "君"
kana: "キミ"
WHO:
-
word: "誰"
kana: "ダレ"
HA:
-
word: "は"
kana: "ワ"
MO:
-
word: "も"
kana: "モ"
NE:
-
word: "ね"
kana: "ネ"
YO:
-
word: "よ"
kana: "ヨ"


ご購入

もう少々お待ち下さい。

体験版

version 1.5 から、IPアドレス制限が無くなり、ライセンス制になりました。ライセンスされていない場合、起動後30時間後に自動的に HAL を終了します。

体験版のインストーラー・スクリプトをダウンロード インストーラー・スクリプト
SHA-1: dd2a390b4f0f8c15301eaee23cd92bd5e831da91
※インストール方法については ソケットサーバー「HAL」の概要 (version 2.0対応版)~導入方法 を御覧ください。

体験版パッケージ
HAL_trial_2_0.tar.gz | version 2.0 | SHA-1: ce31802a5b423a9b0d73721a3d43e0585b009a6f
試用期限 2017/1/31 まで

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信