def post(self, request, hook_id):
        """
        Process Messenger webhook.
            1. Get an enabled Messenger bot
            3. For each message serialize
            4. For each message create :class:`MessengerMessage <permabots.models.messenger_api.MessengerMessage>`
            5. Delay processing of each message to a task      
            6. Response provider
        """
        try:
            bot = caching.get_or_set(MessengerBot, hook_id)
        except MessengerBot.DoesNotExist:
            logger.warning("Hook id %s not associated to a bot" % hook_id)
            return Response(status=status.HTTP_404_NOT_FOUND)
        logger.debug("Messenger Bot %s attending request %s" % (bot, request.data))
        webhook = Webhook.from_json(request.data)
        for webhook_entry in webhook.entries:
            for webhook_message in webhook_entry.messaging:
                try:
                    if webhook_message.is_delivery:
                        raise OnlyTextMessages
                    message = self.create_message(webhook_message, bot)
                    if bot.enabled:
                        logger.debug("Messenger Bot %s attending request %s" % (bot, message))
                        handle_messenger_message.delay(message.id, bot.id)
                    else:
                        logger.error("Message %s ignored by disabled bot %s" % (message, bot))
                except OnlyTextMessages:
                    logger.warning("Not text message %s for bot %s" % (message, hook_id))
                except:
                    exc_info = sys.exc_info()
                    traceback.print_exception(*exc_info)                
                    logger.error("Error processing %s for bot %s" % (webhook_message, hook_id))
                    return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        return Response(status=status.HTTP_200_OK)