Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 13 additions & 66 deletions dashbot/alexa.py
Original file line number Diff line number Diff line change
@@ -1,70 +1,17 @@
import os
import datetime
import time
import json

from .version import __version__
from . import generic
from .generic import Generic

class alexa(generic.generic):

def __init__(self,apiKey,debug=False,printErrors=False):

if 'DASHBOT_SERVER_ROOT' in os.environ:
serverRoot = os.environ['DASHBOT_SERVER_ROOT']
else:
serverRoot = 'https://tracker.dashbot.io'
self.urlRoot = serverRoot + '/track'
self.apiKey=apiKey
self.debug=debug
self.printErrors=printErrors
self.platform='alexa'
self.version = __version__
self.source = 'pip'

def logIncoming(self,event):
url = self.urlRoot + '?apiKey=' + self.apiKey + '&type=incoming&platform='+ self.platform + '&v=' + self.version + '-' + self.source

now = datetime.datetime.now()
timestamp = int(1000*(time.mktime(now.timetuple()) + now.microsecond * 1e-6))

try:
event = json.loads(event)
except Exception as e:
if self.debug:
print(e)

data={
'dashbot_timestamp':timestamp,
'event':event,
}

if self.debug:
print('Dashbot Incoming:'+url)
print(json.dumps(data))

self.makeRequest(url,'POST',data)

def logOutgoing(self,event,response):
url = self.urlRoot + '?apiKey=' + self.apiKey + '&type=outgoing&platform='+ self.platform + '&v=' + self.version + '-' + self.source

now = datetime.datetime.now()
timestamp = int(1000*(time.mktime(now.timetuple()) + now.microsecond * 1e-6))

try:
event = json.loads(event)
except Exception as e:
if self.debug:
print(e)

data={
'dashbot_timestamp':timestamp,
'event':event,
'response':response

class Alexa(Generic):
def _load_data(**kwargs):
event = kwargs['request_envelope'].to_dict()
event['request']['timestamp'] = event['request']['timestamp'].isoformat()
data = {
'dashbot_timestamp': int(time.time() * 1000),
'event': event,
}

if self.debug:
print('Dashbot Outgoing:'+url)
print(json.dumps(data))

self.makeRequest(url,'POST',data)
if 'response' in kwargs:
data['response'] = kwargs['response'].to_dict()

return data
97 changes: 40 additions & 57 deletions dashbot/alexa_vl.py
Original file line number Diff line number Diff line change
@@ -1,69 +1,52 @@
import os
import sys
import os.path
import json
from .alexa import Alexa

from .version import __version__
from . import alexa

class alexa_vl(alexa.alexa):

def __init__(self,apiKey=None,debug=False,printErrors=False):

if 'DASHBOT_SERVER_ROOT' in os.environ:
serverRoot = os.environ['DASHBOT_SERVER_ROOT']
else:
serverRoot = 'https://tracker.dashbot.io'
self.urlRoot = serverRoot + '/track'
self.apiKey=apiKey
self.debug=debug
self.printErrors=printErrors
self.platform='alexa'
self.version = __version__
class AlexaVL(Alexa):
def __init__(self, api_key=None, debug=False, print_errors=False):
super(self).__init__()
self.source = 'pip_vl'
#vl initialize
def initialize(self,apiKey,session):
self.apiKey=apiKey
self.session=session
#vl track
def track(self,intent_name,intent_request,response):
event = self.regenerateEvent(intent_request)
self.logIncoming(event)
self.logOutgoing(event,response)
#vl helper
def regenerateEvent(self,intent_request):

# VL initialize
def initialize(self, api_key, session):
self.api_key = api_key
self.session = session

# VL track
def track(self, intent_request, response):
event = self.regenerate_event(intent_request)
self.log_incoming(event)
self.log_outgoing(event, response)

# VL helper
def regenerate_event(self, intent_request):
event = {
'session': self.session,
'request':intent_request,
'context':{
'System':{
'application':self.session['application'],
'user':self.session['user']
'request': intent_request,
'context': {
'System': {
'application': self.session['application'],
'user': self.session['user']
}
}
}
return event

#vl helper
def generateResponse(self,speechText):
if speechText[0:7]=='<speak>':
return {
'response':{
'outputSpeech':{
'type':'SSML',
'ssml': speechText
}
}

# VL helper
def generate_response(self, speech_text):
if speech_text[0:7] == '<speak>':
output_speech = {
'type': 'SSML',
'ssml': speech_text,
}

else:
return {
'response':{
'outputSpeech':{
'type':'Plaintext',
'text':speechText
}
}
output_speech = {
'text': speech_text,
'type': 'Plaintext',
}

return {
'response': {
'outputSpeech': output_speech
}
}
109 changes: 50 additions & 59 deletions dashbot/generic.py
Original file line number Diff line number Diff line change
@@ -1,77 +1,68 @@
from __future__ import print_function

import json
import logging
import os
import sys

import requests
import os.path
import logging
import json

from .version import __version__

class generic():

def __init__(self,apiKey,debug=False,printErrors=False):

if 'DASHBOT_SERVER_ROOT' in os.environ:
serverRoot = os.environ['DASHBOT_SERVER_ROOT']
else:
serverRoot = 'https://tracker.dashbot.io'
self.urlRoot = serverRoot + '/track'
self.apiKey=apiKey
self.debug=debug
self.printErrors=printErrors
self.platform='generic'
self.version = __version__
self.source = 'pip'

def getBasestring(self):
if (sys.version_info > (3, 0)):
return (str, bytes)
else:
return basestring

def makeRequest(self,url,method,json):
class Generic():
def __init__(self, api_key, debug=False, print_errors=False):
domain = os.environ.get('DASHBOT_SERVER_ROOT', 'https://tracker.dashbot.io')
url_root = '{domain}/track'.format(domain=domain)
url = '{url_root}?apiKey={api_key}&type={{}}&platform={platform}&v={version}-{source}'
self.api_key = api_key
self.url = url.format(**{
'url_root': url_root,
'api_key': api_key,
'platform': type(self).__name__,
'version': __version__,
'source': 'pip',
})
self.print_errors = print_errors
self.debug = debug

def _load_data(self, **kwargs):
return json.loads(**kwargs['data'])

def _make_request(self, url, method, json):
try:
if method=='GET':
if method == 'GET':
r = requests.get(url, params=json)
elif method=='POST':
elif method == 'POST':
r = requests.post(url, json=json)
else:
print('Error in makeRequest, unsupported method')
print('Error in _make_request, unsupported method')
if self.debug:
print('dashbot response')
print (r.text)
if r.status_code!=200:
logging.error("ERROR: occurred sending data. Non 200 response from server:"+str(r.status_code))
print(r.text)
if r.status_code != 200:
logging.error(
"ERROR: occurred sending data. "
"Non 200 response from server: {code}".format(code=r.status_code)
)
except ValueError as e:
logging.error("ERROR: occurred sending data. Exception:"+str(e))

def logIncoming(self,data):
url = self.urlRoot + '?apiKey=' + self.apiKey + '&type=incoming&platform='+ self.platform + '&v=' + self.version + '-' + self.source

try:
data = json.loads(data)
except Exception as e:
if self.debug:
print(e)

logging.error("ERROR: occurred sending data. Exception: {e}".format(e=e))

def log_incoming(self, **kwargs):
url = self.url.format('incoming')
data = self._load_data(**kwargs)

if self.debug:
print('Dashbot Incoming:'+url)
print('Dashbot Incoming:' + url)
print(json.dumps(data))

self.makeRequest(url,'POST',data)

def logOutgoing(self,data):
url = self.urlRoot + '?apiKey=' + self.apiKey + '&type=outgoing&platform='+ self.platform + '&v=' + self.version + '-' + self.source

try:
data = json.loads(data)
except Exception as e:
if self.debug:
print(e)


self._make_request(url, 'POST', data)

def log_outgoing(self, **kwargs):
url = self.url.format('outcoming')
data = self._load_data(**kwargs)

if self.debug:
print('Dashbot Outgoing:'+url)
print('Dashbot Outgoing:' + url)
print(json.dumps(data))
self.makeRequest(url,'POST',data)

self._make_request(url, 'POST', data)
Loading