首頁 > API > Plurk 官方 API 機器人對話模式~~

Plurk 官方 API 機器人對話模式~~

前幾天筆者寫了 KISSRADIO星星一族 有問必答 Plurk 官方 API
這屬於問了之後機器人去回答~~
這幾天看了朋友跟小c機器人的有趣對話之後…決定自己也來試試看!!

規劃模式如下
1.先判斷噗浪上的噗是否含有機器人的關鍵字
(如您的機器人叫小K..那麼只要有人喊到內含小K的關鍵字,機器人就會啓動)
補充:如果您是以PHP開發,又是以in_array去判斷的話,關鍵字必須一模一樣
因為in_array無法像SQL like語法一樣去做比對~~這時我們可以寫個funtion 透過str_replace 去取代
取代就可以類似像like一樣的去判斷,有取代到字串,就是代表內含關鍵字囉..^^
funtion code如下,還會連代你取代了什麼值,return回去

function checkstr($t)
{
$name = array(
'小優'
);
foreach($name as $key => $value)
{
$value = trim($value);
$t1 = str_replace($value, '', $t);
if($t1 != $t)
return $name[$key];

}
}

補充說明:另外也可以用strpos去達成,如下,感謝志中指導!!

function checkstr($t)
{
$name = array(
'小優'
);
foreach($name as $key => $value)
{
$value = trim($value);
$t1 = strpos($t,$value);
if($t1 != '')
return $name[$key];

}
}

2.條件一成立時,判斷機器人自己是否有回過,沒回過就引入開場對白
我們可以加上時間的判斷,讓機器人更貼近您的生活

if(checkstr($check_str)!=''){

$target_pid = $Plurks->plurks[$key]->plurk_id;
$target_time = strtotime($Plurks->plurks[$key]->posted);

$response = '';

//假設沒有回過
if($checkrepo!='1'){
$h = date("H");
if($h>=05&&$h<11){
$txt = '早安';
}elseif($h>=11&&$h<18){
$txt = '午安';
}elseif($h>=18&&$h<=24){
$txt = '晚安';
}elseif($h>=01&&$h<05){
$txt = '晚安';
}

$response = $txt.',主人:找我有事嗎?? (急急忙忙衣服還沒穿好就跑出來了) 機器人用法請參考http://blog.doremicat.com';

$response = addslashes($response);

$result = $plurk->add_response($target_pid, $response, 'says');
}else{

3.接下來就判斷該噗最後一筆user打了什麼,是否有內含到關鍵字
官方API我們可以透過下面方式去取出總回噗數

$Resum = $Re->responses_seen;
//因為回噗數起始值為0,這裡我們讓它減1
$Resum = $Resum - 1;

取出總共有幾則回噗,我們就可以去取出最後一噗user說了什麼?再去判斷要不要回噗~~

//如果有回過,比對回覆過的
$Resum = $Re->responses_seen;
$Resum = $Resum - 1;

$check_str = trim($Re->responses[$Resum]->content_raw);

if(checkstr2($check_str)!=''){

$response = '';

$objResultMWD = new MySQLbasic();

$sql = "SELECT * FROM XXX WHERE XX = '" . checkstr2($check_str) . "' AND date = '" . date('Y-m-d',    $target_time) . "'";
$objResultMWD->setExecute($sql);

while ($objRecord = $objResultMWD->nextRecord()){

$response .= checkstr2($check_str).str_repeat('★', $objRecord->star);

$response .= ' 大星:' . $objRecord->big;
$response .= ' 小星:' . $objRecord->small;
}

$response = addslashes($response);

$result = $plurk->add_response($target_pid, $response, 'says');
}
}

noname
真的很好玩,筆者也在想PLURK API到底還有哪些可以應用!! ^^

Plurk機器人製作,請洽 0911-097-991 小彬

相關文章:

Categories: API Tags: 2,643
  1. clude
    2010年3月4日04:42 | #1

    先感謝分享code…想請問~~
    把這個和php-plurk-api專案裡配合下去run~為什麼跑到第二步的第一行就掛掉呢?

    if(checkstr($check_str)!=") 這行掛掉

    還是還需要設什麼??謝謝回答~~~

  2. 2010年3月4日04:45 | #2

    @clude
    1.你先確定是不是有 checkstr這funtion
    2.if(checkstr($check_str)!=』) 應該變成 if(checkstr($check_str)!=")

  1. 本篇文章目前尚無任何 trackbacks 和 pingbacks。