IMified 機器人使用 Session

昨天在說明 IMified 機器人時,說到某些功能無法使用,而無法做多樣變化。
而昨晚在官方的知識庫中,發現了一些新資訊。
這個資訊對於「功能」的加強,會有非常大的幫助。

如果各位擅長於開發網站,想必對 Session 已經有足夠的認識。

而在 IMified 的設計中,機器人是無法儲存 Cookie 的,因此 Session ID 也理所當然的在每次使用時「被更換」
那麼,要如何存取 Session 呢?

這下有人建議:「將 User Key 設定為 Session ID 吧!」

原本我對於 Session ID 並沒有深入認識,不過一看到之後。
就馬上去了解 Session ID 的相關資訊,也得出了處理方法。

本篇文章介紹的是 PHP 的作法,畢竟我比較擅長PHP撰寫。

<?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 查詢。";
  }
}
?>

以上程式碼為即時撰寫出來,並沒有實際的測試。
如果有錯誤請留言告知,我會儘快修正。

有了 Session 的支援,在開發上又更加的省力。
比起我原本使用的與value0的訊息紀錄,更能夠做多樣的變化。

最後,希望大家仍能提供「心得」給我。

Comments are closed.