我使用the Facebook-Messenger gem爲了創建聊天機器人,允許我發送消息從藍色發送給我的訂閱者。Rails:Shorturl追蹤Facebook Messenger chatbot的點擊次數節省太多點擊
我想保存在我的rails數據庫中,每次點擊the generic model的url按鈕。爲此,我創建了一個指向shorturl控制器的特殊url,該控件在保存數據後重定向到最終的url。
在輔助發送請求:
def perform(sender, title, image_url, subtitle, cta_url, cta_text, access_token, letter_id)
Bot.deliver({
recipient: {
id: sender
},
message: {
"metadata": letter_id,
"attachment":{
"type": "template",
"payload":{
"template_type": "generic",
"elements":[
{
"title": title,
"image_url": image_url.html_safe,
"subtitle": subtitle,
"default_action": {
"type": "web_url",
"url": cta_url.html_safe
},
"buttons": [
{
"type": "web_url",
"url": cta_url.html_safe,
"title": cta_text
},
{
"type": "element_share"
}
]
}
]
}
}
}
}, access_token: access_token)
end
的SHORTURL控制器:
class ShorturlController < ApplicationController
def show
@shorturl = ShortUrl.find_by_token(params[:id])
@card = Card.find(@shorturl.card_id)
@subscriber = BotUser.find_by_sender_id(params['u'])
analytic_clic.increment!(:click_count, by = 1)
@final_url = @card.cta_button_url
redirect_to @final_url, :status => 301
end
private
def analytic_clic
@analytic_clic ||= AnalyticClic.find_or_create_by(
card_id: @card.id,
short_url_id: @shorturl.id,
bot_user_id: @subscriber.id
)
end
end
與SHORTURL控制器相關的路線:
get 's/:id' => "shorturl#show"
不幸的是,當我送製作中的消息約爲200個用戶,它可以立即節省大約100次點擊。我不知道爲什麼,因爲Facebook不會通過發送http請求來「測試」url。日誌很好,我有很多請求短命,但在此之前沒有錯誤。
任何想法爲什麼它執行所有這些獲取請求,我的短褲,即使訂閱者還沒有點擊鏈接呢?
這裏是一個SHORTURL我創建了一個例子:https://www.botletter.com/s/qsKcsm7NCRp4qkRGUqfPx7Sp?u=1451521288246029
用戶的瀏覽器正試圖加載鏈接預覽,我猜? –
但是它不應該是這種情況,因爲我使用Facebook的通用模型,而不是正常的鏈接生成預覽,不是? – AlphaNico
如果是這樣的話,它應該可以節省200次點擊,而不是隻有一半,因爲有200個收件人? – AlphaNico