<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>貳夢の弦 &#187; 機器人</title>
	<atom:link href="http://blog.frost.tw/tag/%e6%a9%9f%e5%99%a8%e4%ba%ba/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.frost.tw</link>
	<description>夢醒之時，驚覺一切都是虛幻。前行吧！迷途者。</description>
	<lastBuildDate>Wed, 26 Oct 2011 13:28:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://blog.frost.tw/?pushpress=hub'/>
		<item>
		<title>IMified &#8211; 設置使用者暱稱之一</title>
		<link>http://blog.frost.tw/code/poston-2010-02-24/postid-415</link>
		<comments>http://blog.frost.tw/code/poston-2010-02-24/postid-415#comments</comments>
		<pubDate>Wed, 24 Feb 2010 11:58:44 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[機器人]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=415</guid>
		<description><![CDATA[今天的網誌可能太晚，因為我在撰寫簡易的程式。 雖然很簡單，不過還是花了一點時間。 (不過寫到一半被奶奶叫去，所以只好拖到現在。) 本篇文章會著重在程式部份，所以文字敘述比較少。 那麼，廢話不多說，就先來開始今天的主題吧！ 今天是使用文字檔案儲存，並且無快取。 因此適合小型使用，大型使用時請避免這種作法。 bot.php &#8211; 機器人主程式 &#60;?php session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']); session_start(); include('./data.inc.php'); $nickname = getnick($_REQUEST['userkey']); if($_REQUEST['msg'] == 'exit'){ $_SESSION['action'] = NULL; echo "成功逃離無限地獄！"; }else{ switch($_SESSION['action']){ case 1: upnick($_REQUEST['msg'], $_REQUEST['userkey']); $_SESSION['action'] = NULL; echo "修改完成！"; break; case 2: echo &#8230; <a href="http://blog.frost.tw/code/poston-2010-02-24/postid-415">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天的網誌可能太晚，因為我在撰寫簡易的程式。<br />
雖然很簡單，不過還是花了一點時間。<br />
(不過寫到一半被奶奶叫去，所以只好拖到現在。)<br />
<span id="more-415"></span><br />
本篇文章會著重在程式部份，所以文字敘述比較少。<br />
那麼，廢話不多說，就先來開始今天的主題吧！</p>
<p>今天是使用文字檔案儲存，並且無快取。<br />
因此適合小型使用，大型使用時請避免這種作法。</p>
<p>bot.php &#8211; 機器人主程式</p>
<pre class="brush: php">
&lt;?php

session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']);
session_start();

include('./data.inc.php');

$nickname = getnick($_REQUEST['userkey']);

if($_REQUEST['msg'] == 'exit'){
	$_SESSION['action'] = NULL;
	echo "成功逃離無限地獄！";
}else{

	switch($_SESSION['action']){
		case 1:
			upnick($_REQUEST['msg'], $_REQUEST['userkey']);
			$_SESSION['action'] = NULL;
			echo "修改完成！";
		break;
		case 2:
			echo "{$nickname}想繼續發呆就別輸入 exit";
		break;
		default:
			switch($_REQUEST['msg']){
				case '?':
				case 'help':
					echo "輸入1修改暱稱，輸入2開始發呆";
				break;
				case '1':
					$_SESSION['action'] = 1;
					echo "輸入暱稱後更新";
				break;
				case '2':
					$_SESSION['action'] = 2;
					echo "進入發呆區";
				break;
				default:
					echo "需要幫助請輸入 ? 或 help";
			}
	}
}

?&gt;
</pre>
<p>上方的程式碼是之前的版本修改而來，並且改用 Session 作為選單紀錄。</p>
<p>data.inc.php &#8211; 目前只有一項功能，暫時針對此功能製作。</p>
<pre class="brush: php">
&lt;?php
	function data($path = './nickname.txt'){ //存取資料
		$data = file_get_contents($path);
		$line = explode("\n", $data);
		foreach($line as $nicks){
			$nicks = explode("\t", $nicks);
			$nickname[$nicks[0]] = $nicks[1];
		}
		return $nickname;
	}

	function getnick($userkey){ //取得暱稱
		$nickname = data();
		$nickname = $nickname[$userkey] ? $nickname[$userkey] : '訪客';
		return $nickname;
	}

	function upnick($nickname, $userkey, $path = './nickname.txt'){ //更新暱稱
		$data = data();
		$data[$userkey] = $nickname;
		foreach($data as $key => $nicks){
			$line[] = "{$key}\t{$nicks}";
		}
		$nicknames = implode("\n", $line);
		file_put_contents($path, $nicknames);
	}
?&gt;
</pre>
<p>此程式碼是以 PHP5 為基礎使用，因此無法運作時請檢查 PHP 版本。</p>
<p>大致上就算完成製作了，我也進行過測試。<br />
一切都正常運作，不過因為會頻繁讀取檔案，所以小型機器人的架構使用會比較好。</p>
<p>下次寫程式就不知道是何時了！<br />
畢竟「開學，事情又增多！」</p>
<p>總之，希望大家別忘記在有空的時候經常來拜訪本站！<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-02-24/postid-415/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMified 不同IM不同回應</title>
		<link>http://blog.frost.tw/code/poston-2010-02-23/postid-412</link>
		<comments>http://blog.frost.tw/code/poston-2010-02-23/postid-412#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:53:14 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[MSM]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[機器人]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=412</guid>
		<description><![CDATA[今天發網誌晚很多，主要是因為在趕工網界博覽會的專題頁。 (我竟然完完全全的把這個頁面忘記，只好先讓網誌晚點上場了！) 其實是個很簡單的東西，而因為我今天有點晚發，很多事情沒做。 所以今天文章比較短篇，請各位見諒。 在上次使用 Session 時，有發現一個變數 $_REQUEST['network'] 而這個變數的作用為何呢？ 其實就是「分辨使用的即時通訊軟體」 因此，利用傳入的 network 來分辨，就可以依照 IM 來傳回不同訊息。 &#60;?php switch($_REQUEST['network']){ case 'Yahoo': echo "你正使用 Yahoo 與機器人溝通"; break; case 'MSN': echo "你正使用 MSN 與機器人溝通"; break; case 'AIM': echo "你正使用 AIM 與機器人溝通"; break; default: echo &#8230; <a href="http://blog.frost.tw/code/poston-2010-02-23/postid-412">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天發網誌晚很多，主要是因為在趕工網界博覽會的專題頁。<br />
(我竟然完完全全的把這個頁面忘記，只好先讓網誌晚點上場了！)<br />
<span id="more-412"></span><br />
其實是個很簡單的東西，而因為我今天有點晚發，很多事情沒做。<br />
所以今天文章比較短篇，請各位見諒。</p>
<p>在上次使用 Session 時，有發現一個變數 $_REQUEST['network']<br />
而這個變數的作用為何呢？<br />
其實就是「分辨使用的即時通訊軟體」</p>
<p>因此，利用傳入的 network 來分辨，就可以依照 IM 來傳回不同訊息。</p>
<pre class="brush: php">&lt;?php

switch($_REQUEST['network']){
  case 'Yahoo':
    echo "你正使用 Yahoo 與機器人溝通";
  break;
  case 'MSN':
    echo "你正使用 MSN 與機器人溝通";
  break;
  case 'AIM':
    echo "你正使用 AIM 與機器人溝通";
  break;
  default:
    echo "你使用 Yahoo/MSN/AIM 以外的即時通訊軟體，或者未知的軟體。";
}

?&gt;
</pre>
<p>整體構造非常簡單，官方的範例是用來針對特推以及簡訊部份。<br />
而特推與簡訊部份不會有 $_REQUEST['msg'] 這個值，也是另外一種判斷方法。</p>
<p>而今天暫時就到這裡，希望大家能夠見諒。<br />
&#8212; 高二的生活愈來愈忙碌，真不知道下次能路影片展示給大家看是何時。<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-02-23/postid-412/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMified 機器人使用 Session</title>
		<link>http://blog.frost.tw/life/poston-2010-02-22/postid-409</link>
		<comments>http://blog.frost.tw/life/poston-2010-02-22/postid-409#comments</comments>
		<pubDate>Mon, 22 Feb 2010 10:50:13 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[生活雜記]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[機器人]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=409</guid>
		<description><![CDATA[昨天在說明 IMified 機器人時，說到某些功能無法使用，而無法做多樣變化。 而昨晚在官方的知識庫中，發現了一些新資訊。 這個資訊對於「功能」的加強，會有非常大的幫助。 如果各位擅長於開發網站，想必對 Session 已經有足夠的認識。 而在 IMified 的設計中，機器人是無法儲存 Cookie 的，因此 Session ID 也理所當然的在每次使用時「被更換」 那麼，要如何存取 Session 呢？ 這下有人建議：「將 User Key 設定為 Session ID 吧！」 原本我對於 Session ID 並沒有深入認識，不過一看到之後。 就馬上去了解 Session ID 的相關資訊，也得出了處理方法。 本篇文章介紹的是 PHP 的作法，畢竟我比較擅長PHP撰寫。 &#60;?php session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']); //設定Session &#8230; <a href="http://blog.frost.tw/life/poston-2010-02-22/postid-409">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>昨天在說明 IMified 機器人時，說到某些功能無法使用，而無法做多樣變化。<br />
而昨晚在官方的知識庫中，發現了一些新資訊。<br />
這個資訊對於「功能」的加強，會有非常大的幫助。<br />
<span id="more-409"></span><br />
如果各位擅長於開發網站，想必對 Session 已經有足夠的認識。</p>
<p>而在 IMified 的設計中，機器人是無法儲存 Cookie 的，因此 Session ID 也理所當然的在每次使用時「被更換」<br />
那麼，要如何存取 Session 呢？</p>
<p>這下有人建議：「將 User Key 設定為 Session ID 吧！」</p>
<p>原本我對於 Session ID 並沒有深入認識，不過一看到之後。<br />
就馬上去了解 Session ID 的相關資訊，也得出了處理方法。</p>
<p>本篇文章介紹的是 PHP 的作法，畢竟我比較擅長PHP撰寫。</p>
<pre class="brush: php">&lt;?php
session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']); //設定Session ID 並且依照 Network 分別紀錄
session_start();

if($_SESSION['action']){
  switch($_SESSION['action']){
    case 1:
      //此區為登入功能，省略
    break;
    case 2:
      //此需為查詢服務，省略
    break;
    //這裡可以自由擴充
    default:
      echo "未定義動作。";
  }
}else{ //沒有Session 紀錄時運行
  switch($_REQUEST['msg']){
    case '/?':
    case '/help': //設定兩種方式取得幫助( Pidgin使用者無法使用 /help 語法故提供 /? )
      echo "輸入對應數字可開啟對應功能
 1. 登入系統
2. 查詢帳戶";
    break;
    case 1:
      $_SESSION['action'] = 'login';
      echo "請輸入帳號";
    break;
    case 2:
      if(!$_SESSION['auth']){
          echo "尚未登入";
      }else{
          echo "輸入對應數字取得相關服務";
      }
    break;
    default:
      echo "需要幫助請輸入 /? 或者 /help 查詢。";
  }
}
?&gt;
</pre>
<p>以上程式碼為即時撰寫出來，並沒有實際的測試。<br />
如果有錯誤請留言告知，我會儘快修正。</p>
<p>有了 Session 的支援，在開發上又更加的省力。<br />
比起我原本使用的與value0的訊息紀錄，更能夠做多樣的變化。</p>
<p>最後，希望大家仍能提供「心得」給我。<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/life/poston-2010-02-22/postid-409/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IMified &#8211; 免費的 MSN 機器人</title>
		<link>http://blog.frost.tw/code/poston-2010-02-21/postid-406</link>
		<comments>http://blog.frost.tw/code/poston-2010-02-21/postid-406#comments</comments>
		<pubDate>Sun, 21 Feb 2010 10:22:58 +0000</pubDate>
		<dc:creator>蒼時弦や</dc:creator>
				<category><![CDATA[程式語言]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[機器人]]></category>

		<guid isPermaLink="false">http://blog.frost.tw/?p=406</guid>
		<description><![CDATA[各位有想過開發MSN機器人嗎？ 使用 IMified 幫你一圓夢想吧！ 不過根據弦的觀察，其實功能並不多。 網站網址：http://www.imified.com/ 雖然能使用已經很棒了，不過功能還有待加強。 此項服務從 2007 年開始，實際進步多少我無法確定。 而目前 IMified 提供什麼呢？ 1. 無限MSN機器人數量(一照我看到的資訊，是沒有限制的) 2. 免費SMS簡訊服務(我沒辦法啟用，而且限定在美國使用) 3. Google Talk, MSN, AIM, Jabber, Twitter, Yahoo (似乎停用) 的整合 目前 IMified 無法支援的部份： 自訂頭像、顯示名稱，還有更多元的API功能(目前API只有四項) 而已知有一個Bug會造成開發上有些麻煩： &#60;goto&#62; 的系統擴充語法無法使用，讓一部份功能無法運用。 而詳細的開發細節，就在下一次介紹了！ 這邊分享一段我開發的程式碼，功能很簡單，不過可以用來參考。 觀看完畢後，請別忘記回覆文章喔！]]></description>
			<content:encoded><![CDATA[<p>各位有想過開發MSN機器人嗎？<br />
使用 IMified 幫你一圓夢想吧！<br />
不過根據弦的觀察，其實功能並不多。<br />
<span id="more-406"></span><br />
網站網址：<a href="http://www.imified.com/" target="_blank">http://www.imified.com/</a><br />
雖然能使用已經很棒了，不過功能還有待加強。<br />
此項服務從 2007 年開始，實際進步多少我無法確定。</p>
<p>而目前 IMified 提供什麼呢？<br />
1. 無限MSN機器人數量(一照我看到的資訊，是沒有限制的)<br />
2. 免費SMS簡訊服務(我沒辦法啟用，而且限定在美國使用)<br />
3. Google Talk, MSN, AIM, Jabber, Twitter, Yahoo (似乎停用) 的整合</p>
<p>目前 IMified 無法支援的部份：<br />
自訂頭像、顯示名稱，還有更多元的API功能(目前API只有四項)</p>
<p>而已知有一個Bug會造成開發上有些麻煩：<br />
&lt;goto&gt; 的系統擴充語法無法使用，讓一部份功能無法運用。</p>
<p>而詳細的開發細節，就在下一次介紹了！<br />
這邊分享一段我開發的程式碼，功能很簡單，不過可以用來參考。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Rn3QPkrmhCI&amp;hl=zh&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Rn3QPkrmhCI&amp;hl=zh&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>觀看完畢後，請別忘記回覆文章喔！<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frost.tw/code/poston-2010-02-21/postid-406/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

