J'utilise the Facebook-Messenger gem afin de créer un chatbot me permettant d'envoyer des messages à l'improviste à mes abonnés.Rails: Shorturl pour suivre les clics pour Facebook Messenger chatbot enregistre beaucoup trop de clics
Je veux enregistrer dans ma base de données de rails chaque clic sur le bouton d'URL de the generic model. Pour cela, je crée une URL spéciale qui redirige vers un contrôleur shorturl qui redirige vers l'URL finale après avoir sauvegardé les données.
La demande d'envoi dans un travailleur:
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
Le contrôleur 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
La route associée au contrôleur de SHORTURL:
get 's/:id' => "shorturl#show"
Malheureusement, quand j'envoyer la message dans la production à environ 200 abonnés, il enregistre environ 100 clics immédiatement. Je ne sais pas pourquoi, puisque Facebook ne "teste" pas l'URL en envoyant une requête http. Les logs sont très bien, j'ai beaucoup de demandes get pour le shorturl mais pas d'erreurs avant ça.
Une idée de la raison pour laquelle ils effectuent tous ces requêtes get getur mon shorturl même si les abonnés n'ont pas encore cliqué sur le lien?
Voici un exemple d'un SHORTURL j'ai créé: https://www.botletter.com/s/qsKcsm7NCRp4qkRGUqfPx7Sp?u=1451521288246029
navigateurs de l'abonné essayons de charger l'aperçu du lien, je suppose? –
Mais ce ne devrait pas être le cas car j'utilise le modèle générique de Facebook, pas un lien normal générant un aperçu, non? – AlphaNico
Et si c'était le cas, ça devrait sauver 200 clics et pas seulement la moitié puisqu'il y a 200 destinataires? – AlphaNico