2024年9月12日木曜日

Webex Bot 2:lambdaからメッセージを送る

 今回は第2回目。前回Postmanで実行した内容をlambdaで実行してみたいと思います。


1.lambdaを起動する
ここでは、AWS academyで実施していますが、通常のAWSでも問題ないです。
右上の[関数を作成]から、新しい関数を作成します。


関数名:何か名前をつけてください
ランタイム:Python3.10 ※layersに設定するファイルをcolab(python3.10)で作成するため
アクセス権限:aws academyの場合設定
詳細設定:関数URLを有効化 認証タイプはNONE
上記以外は、デフォルトのままでOKです。

2.コードを記載する
lambdaは、通常lambda_handler関数が実行されます。※変更も可能ですが、ここではこのまま行きます。
event内にpostされた際に送られてきた情報が入ってきます。
まずはpostされた内容に関係なく情報を送信するため、4行目以降にコードを書いていきます。

前回のPostmanで実行したメッセージ送信のコードをコピーして貼り付けます。
import json
import requests


def lambda_handler(event, context):
    # TODO implement
        
    url = "https://webexapis.com/v1/messages"
    
    payload = json.dumps({
      "roomId": "Y2lzY29zc*****kMGY5Njkw",
      "markdown": "こんにちは"
    })
    headers = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer YmYyMGQ****8cf0-2917b2d84a0f'
    }
    
    response = requests.request("POST", url, headers=headers, data=payload)
    
    print(response.text)
    

    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

コードを変えると、デプロイを求められるので必ずデプロイしましょう。


実行するときは、[Test]から実行します。イベント情報の登録が必要になりますが、イベント名はなんでもOK。イベントJSON情報は変更せずにそのままで良いです。


このまま実行しても、No module named 'requests'のエラーが出ます。
そのためrequestsが読めるようにlayers登録をしていきます。

3. layersの作成
layersの登録は、Lambda内のレイヤーから実施していきます。
右上の[レイヤーを作成]から登録します。
名前はなんでもOK
requestsモジュールの入ったzipファイルについては下記のコードから作成して、zipファイルをあげていきます。
!pip install -t /content/drive/MyDrive/Layers/requests/python requests

!find /content/drive/MyDrive/Layers/requests/python -name "*.pyc" -exec rm -f {} \;
!find /content/drive/MyDrive/Layers/requests/python -name "*.txt" -exec rm -f {} \;

!rm -rf /content/drive/MyDrive/Layers/requests/python/tests
!rm -rf /content/drive/MyDrive/Layers/requests/python/__pycache__
!rm -rf /content/drive/MyDrive/Layers/requests/python/*/tests
!rm -rf /content/drive/MyDrive/Layers/requests/python/*/__pycache__

!cd /content/drive/MyDrive/Layers/requests && zip -r /content/drive/MyDrive/Layers/requests.zip .


4.layersの登録
lambdaの関数に戻って、1番下のレイヤーの追加から、先ほど追加したレイヤーを追加します。
カスタムレイヤーから選択してください


5.実行確認
これで実行すると問題なく実行できました


以上




2024年9月3日火曜日

Webex Bot 1:Botからメッセージを送る(Postman)

 1.Webexアカウントを作成
Webexアカウントがない場合は、作成。 
https://web.webex.com/sign-in


2.Botを作成
https://developer.webex.com/docs/bots
Create a Botから作成


Botを作成すると、access tokenが表示されます。必ず、tokenは保存しておいてください。


3.Botを追加
指定されたスペースに、Botを直接検索して追加する
連絡先>ユーザを追加でusernameを入れる



4.メッセージ送信

4.1room Idの取得
メッセージ送信には、room Idが必要になるため、room Idを取得するAPIを実行
List Rooms:https://developer.webex.com/docs/api/v1/rooms/list-rooms

ここで表示されるIdがroom Idです。



4.2 メッセージ送信
メッセージ送信のAPIを実行
Create a Message:https://developer.webex.com/docs/api/v1/messages/create-a-message



実行されると、このようにメッセージが送られます。