全部產品
Search
文件中心

:設定事件分發

更新時間:Oct 24, 2024

本文介紹Direct Mail服務如何通過整合阿里雲事件匯流排服務,實現郵件投遞結果的分發通知。

使用者成功進行事件匯流排相關配置後,通過Direct Mail服務發送的郵件,其投遞結果將按照在事件匯流排中設定的事件分發規則,發送至指定的事件目標(輕量訊息佇列、HTTP等),實現投遞結果的非同步擷取。

下文將詳細介紹如何完成事件分發設定。

事件匯流排服務開通與訪問授權

1.在阿里雲首頁搜尋事件匯流排或 EventBridge,免費開通事件匯流排服務

image.png

image.png

image.png

image.png

建立事件規則

在控制台-事件匯流排-雲端服務專用事件匯流排-建立規則,建立Direct Mail服務的事件分發規則,配置基本資料,填寫規則名稱和描述;

image.png

配置事件模式,事件來源類型為阿里雲官方事件來源,事件來源選擇acs.dm,事件類型目前支援發送失敗、發送成功、點選連結、開啟郵件,使用者可按需添加,未添加的事件類型會被過濾。

image.png

配置事件目標,選擇服務類型,這裡以輕量訊息佇列為例,指定發送到的目標隊列(輕量訊息佇列服務的開通與隊列的建立請參考下文“開通輕量訊息佇列並建立訊息接收的隊列”章節),訊息體預設選擇完整事件,不進行base64編碼,重試和死信選型可按需設定,設定完成後點擊建立規則。

image.png

規則建立完成後,可在事件匯流排概覽中進行查看。

image.png

事件類型和修改方式

目前支援的事件類型

  • 投遞成功:Deliver:Success

  • 投遞失敗:Deliver:Fail

  • 開啟郵件:Deliver:Open

  • 點擊郵件中的連結:Deliver:Click

修改各類事件的統計

左側導覽列點擊事件規則-編輯事件模式-事件類型,可對事件類型進行修改。

image.png

image.png

開啟或者點擊事件的統計的前提

如果需要對郵件的開啟和點擊行為事件進行通知分發,前期是開啟資料跟蹤功能,詳細操作可參考如何開啟資料跟蹤功能?

接收事件分發訊息,驗證鏈結路已通

以上文流程設定的事件目標輕量訊息佇列為例,驗證事件分發鏈路。

開通輕量訊息佇列並建立訊息接收的隊列

  1. 進入輕量訊息佇列控制台,若未開通輕量訊息佇列服務,則按引導先開通輕量訊息佇列服務。

  2. 單擊左側導覽列中隊列,進入隊列頁面。

  3. 單擊頁面建立隊列按鈕,將會彈出建立隊列對話方塊。

  4. 輸入隊列名稱(隊列名稱使用者可自由定義,本樣本建立delivery-result-queue名稱的隊列),其他按預設值即可,然後單擊確認。

image.png

觸發事件分發並查看

使用Direct Mail服務發送一封郵件後,在事件匯流排控制台查看到事件的追蹤記錄;image.png

image.png

image.png

查看事件分發目標的結果

開啟輕量訊息佇列控制台,在隊列列表選擇事件匯流排目標配置的隊列(案例中為delivery-result-queue)點擊收發訊息按鈕,跳轉至收發訊息快速體驗頁面;

image.png

點擊頁面下方接收訊息按鈕,可查看到剛剛的事件訊息,點擊詳情,可查看到對應的完整事件訊息內容(可以看到事件ID與事件匯流排中的記錄一致,事件即成功分發到了輕量訊息佇列);image.png

image.png

image.png

設定發信地址級事件分發樣本

按照以上樣本流程配置的事件分發對Direct Mail服務下所有的發信網域名稱和地址生效,使用者可根據實際業務需求,修改事件規則的JSON串,來實現按照發信地址等過濾條件進行事件分發。

以下是指定發信地址test@hangzhou.dmtest.top進行Direct Mail事件分發的樣本,通過進行規則配置,使得只有從test@hangzhou.dmtest.top發出的郵件,其記錄訊息才會由事件匯流排分發到事件目標。

1.在建立事件規則時,在模式內容中指定事件模式的具體內容,對指定欄位內容進行過濾。

image.png

本樣本中,模式內容如下:

{
    "source": [
        "acs.dm"
    ],
    "type": [
        "dm:Deliver:Fail",
        "dm:Deliver:Succeed",
        "dm:Trace:Click",
        "dm:Trace:Open"
    ],
    "data": {
        "from": [
            "test@hangzhou.dmtest.top"
        ]
    }
}

這裡是一個完整的事件訊息體,使用者可基於事件體的內容和結構,參考事件模式,編寫事件規則的模式內容。

  • 模式內容中的所有欄位名都必須存在於事件體中,否則此事件訊息會被過濾。

  • 事件模式裡的欄位名必須和事件中的欄位名具有相同嵌套結構。

  • 事件模式是逐個字元精確匹配的 ,需注意大小寫,匹配過程中不會對字串進行任何標準化的操作。

  • 要匹配的值遵循JSON規則:用引號引起來的字串、數字以及不帶引號的關鍵字truefalsenull

  • 事件模式支援OR的語義,事件模式比對中各個Key支援AND語義,Key的Value值支援數組OR的語義。

{
    "datacontenttype": "application/json;charset=utf-8",
    "aliyunaccountid": "1491110661959791",
    "data": {
        "rcpt": "example@example.com",
        "deliver_time": "2024-05-22T08:27:42Z",
        "err_code": "250",
        "failed_type": "SendOk",
        "env_id": "600000083914199845",
        "send_time": "2024-05-22T08:27:41Z",
        "err_msg": "250 Send Mail OK",
        "header": {},
        "from": "example2@aliyun.com",
        "event": "dm:Deliver:Succeed",
        "region": "cn-hangzhou",
        "msg_id": "d93a742c-adec-487d-8c39-98069c583760@example.net",
        "account": "example2@aliyun.com",
        "status": 0
    },
    "subject": "acs:dm:cn-hangzhou:1491110661959791:*",
    "aliyunoriginalaccountid": "1491110661959791",
    "source": "acs.dm",
    "type": "dm:Deliver:Succeed",
    "aliyunpublishtime": "2024-05-22T08:27:42.539Z",
    "specversion": "1.0",
    "aliyuneventbusname": "default",
    "id": "1223c134-b66d-4d53-b05e-780c0261ce22",
    "time": "2024-05-22T08:27:42.462Z",
    "aliyunregionid": "cn-hangzhou"
}

2.進行發信驗證,通過test@hangzhou.dmtest.top發送一封郵件;

image.png

3.在輕量訊息佇列的隊列中(本樣本和設定事件分發流程一樣,採用輕量訊息佇列作為事件目標接收事件訊息,使用者可自行設定事件目標)可查詢到此條訊息。

image.png

4.使用其他發信地址發信後,在事件匯流排-事件追蹤中查詢到了該事件的詳情,但在輕量訊息佇列側,不會收到此條事件訊息,即實現了指定發信地址的回調通知。image.png

image.png

image.png