Process Kik webhook:
            1. Get an enabled Kik bot
            2. Verify Kik signature
            3. Serialize each message
            4. For each message create :class:`KikMessage <permabots.models.kik_api.KikMessage>` and :class:`KikUser <permabots.models.kik_api.KikUser>`
            5. Delay each message processing to a task      
            6. Response provider

def post(self, request, hook_id):
        """
        Process Kik webhook:
            1. Get an enabled Kik bot
            2. Verify Kik signature
            3. Serialize each message
            4. For each message create :class:`KikMessage <permabots.models.kik_api.KikMessage>` and :class:`KikUser <permabots.models.kik_api.KikUser>`
            5. Delay each message processing to a task      
            6. Response provider
        """
        try:
            bot = caching.get_or_set(KikBot, hook_id)
        except KikBot.DoesNotExist:
            logger.warning("Hook id %s not associated to a bot" % hook_id)
            return Response(status=status.HTTP_404_NOT_FOUND)
        signature = request.META.get('HTTP_X_KIK_SIGNATURE')
        if signature:
            signature.encode('utf-8')
        if not bot._bot.verify_signature(signature, request.stream.body):
            logger.debug("Kik Bot data %s not verified %s" % (request.data, signature))
            return Response(status=403)
        logger.debug("Kik Bot data %s verified" % (request.data))
        for kik_message in request.data['messages']:
            serializer = KikMessageSerializer(data=kik_message)   
            logger.debug("Kik message %s serialized" % (kik_message))
            if serializer.is_valid():            
                try:
                    if not self.accepted_types(serializer):
                        raise OnlyTextMessages
                    message = self.create_message(serializer, bot)
                    if bot.enabled:
                        logger.debug("Kik Bot %s attending request %s" % (bot, kik_message))
                        handle_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" % (kik_message, hook_id))
                    return Response(status=status.HTTP_200_OK)
                except:
                    exc_info = sys.exc_info()
                    traceback.print_exception(*exc_info)                
                    logger.error("Error processing %s for bot %s" % (kik_message, hook_id))
                    return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
                   
            else:
                logger.error("Validation error: %s from kik message %s" % (serializer.errors, kik_message))
                return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        return Response(serializer.data, status=status.HTTP_200_OK)