Exemple #1
0
def new_message(request):
    grp_id = request.GET['grp_id']
    g = Group.objects.get(grp_id=grp_id)
    text = request.GET['text']
    access = ''
    for u in User.objects.all():
        if u.grp.pk == g.pk:
            access = u.access_token
            break
    msg = Chat()
    msg.text = text
    msg.by = 2
    msg.grp = g
    msg.ip = str(get_client_ip(request))
    lis = IPMan.objects.filter(ip=str(get_client_ip(request)))
    if len(lis) == 0:
        ipman = IPMan()
        ipman.ip = str(get_client_ip(request))
        ipman.name = get_random_name()
        ipman.save(force_insert=True)
        msg.ipman = ipman
    else:
        msg.ipman = lis[0]
    msg.save(force_insert=True)
    flock_client = FlockClient(token=access, app_id=app_id)
    send_as_hal = SendAs(
        name='@' + msg.ipman.name + ' on LiveChat',
        profile_image='https://f.flockusercontent2.com/0f2c0301487471044df94e37'
    )
    send_as_message = Message(to=grp_id, text=text, send_as=send_as_hal)
    res = flock_client.send_chat(send_as_message)
    return HttpResponse('ok')
Exemple #2
0
def callrecording(request, group='ERROR'):
    group = "g:" + group
    group = group.strip()
    url = request.POST['RecordingUrl']
    callsid = request.POST['CallSid']
    log(group)
    fg = FlockGroup.objects.get(group_id=group)

    d = Download(src=url)
    views = Views()
    views.add_flockml("<flockml>Download the <i>Audio Recording</i></flockml>")
    flock_client = FlockClient(token=fg.access_token, app_id=app_id)
    send_as_hal = SendAs(
        name='@CallRecorder',
        profile_image='https://f.flockusercontent2.com/0f2c03014874709926303cfd'
    )

    attachment = Attachment(title="Audio Recording from Call",
                            downloads=[d],
                            views=views)
    files_message = Message(to=fg.group_id,
                            attachments=[attachment],
                            send_as=send_as_hal)
    res = flock_client.send_chat(files_message)
    log(res)
    resp = twilio.twiml.Response()
    resp.say("Goodbye")
    return HttpResponse(str(resp))
Exemple #3
0
def dislike(request):
    feed_id = request.POST['feed']
    user_id = request.POST['userId']
    reactionType = "dislike"
    message = Messages.objects.get(primaryKey=feed_id)
    reactor = Reactions.objects.filter(foreignKey=message, reactorId=user_id)
    if (len(reactor) == 0):
        print "hii"
        Reactions.objects.create_reaction(message, user_id, reactionType)
    else:
        print "hii2"
        reaction = Reactions.objects.get(foreignKey=message, reactorId=user_id)
        reaction.reactionType = reactionType
        reaction.save()
    message = Messages.objects.get(primaryKey=feed_id)
    likes = Reactions.objects.filter(foreignKey=message, reactionType="like")
    print len(likes)
    message.likes = len(likes)
    dislikes = Reactions.objects.filter(foreignKey=message,
                                        reactionType="dislike")
    message.dislikes = len(dislikes)
    message.save()
    flock_client = FlockClient(token=BOT_TOKEN, app_id=APP_ID)
    user_guid = message.userId
    groupName = message.groupId
    simple_message = Message(to=user_guid,
                             text="You have " + str(len(likes)) +
                             " likes and " + str(len(dislikes)) +
                             "dislikes for a message you pinned in " +
                             groupName)
    res = flock_client.send_chat(simple_message)
    return JsonResponse({"likes": message.likes, "dislikes": message.dislikes})
Exemple #4
0
def sendpoke(userid, reciever, text, odata):
	token = gettoken(userid)
	client = FlockClient(token=token, app_id=app_id)
	message = Message(to=reciever, text=text)
	ret = client.send_chat(message)
	if odata:
		d = Download(src="%s"%(odata))
		view = Views()
		views.add_flockml("<flockml>Download your <i>File</i></flockml>")
		attachment = Attachment(title="File", downloads=[d], views=views)
		message = Message(to=reciever, attachments=[attachment])
		res = client.send_chat(message)
Exemple #5
0
def getSprint():
	flockClient = None
	groupId = request.args.get('grouid')
	userId = request.args.get('userid')
	user = dbHandler.getUser(userId)
	group = dbHandler.getGroup(groupId)
	resp = {}
	resp["type"] = "create"
	resp["groupid"] = groupId
	resp["userid"] = userId
	resp["name"] = None
	resp["createdon"] = None
	resp["expiry"] = None
	resp["tasks"] = None
	resp["members"] = None
	resp["ismaster"] = False
	if not user :
		return resp, 403
	else:
		token = user["token"]
		flockClient = FlockClient(token, APP_ID)
		resp[members] = flockClient.get_group_members()
	if not group :
		resp = make_response(jsonify(response))
		resp.headers.set("Access-Control-Allow-Origin", '*')
		return resp, 200
	else:
		activeSprint = group["activeSprint"]
		if ((activeSprint is None) or activeSprint.trim() == ""):
			resp = make_response(jsonify(response))
			resp.headers.set("Access-Control-Allow-Origin", '*')
			return resp, 200
		else:
			sprint = dbHandler.getSprint(activeSprint)
			resp["tasks"] = []
			taskList = sprint["tasks"]
			for taskId in taskList:
				taskDict = {}
				task = dbHandler.getTask(taskId)
				taskDict["name"] = task["name"]
				subtasks = []
				subTaskLists = task["subtasks"]
				for item in subTaskLists:
					subtasks.append(dbHandler.getSubTask(item))
				taskDict["subtasks"] = subtasks
				resp["tasks"].append(taskDict)

			resp = make_response(jsonify(response))
			resp.headers.set("Access-Control-Allow-Origin", '*')
			return resp, 200
Exemple #6
0
def main():
    token = "60c23d3a-fe48-4390-b08c-174dcc94d8ce"
    APP_ID = "ce53926d-4cbc-413b-be4d-fecfsks4bdea06d"
    flockClient = FlockClient(token, APP_ID)
    mongo = pymongo.MongoClient("mongodb://localhost")
    db = mongo["flockathon"]
    tasks = db.subtasks.find()
    for task in tasks:
        user = flockClient.get_user_info()
        send_as_master = SendAs(name='Scrum-Master',
                                profile_image=user["profileImage"])
        message_text = "Please update your status on " + task["name"]
        msg = Message(to=task["user"],
                      text=message_text,
                      send_as=send_as_master)
        print "sending ", message_text
        flockClient.send_chat(msg)
Exemple #7
0
def getUsers():
	userId = request.args.get('userid')
	print request.args
	user = dbHandler.getUser(userId)
	response = {}
	if user:
		token = user["token"]
		flockClient = FlockClient(token, APP_ID)
		userInfo = flockClient.get_user_info()
		response["username"] = userInfo["firstName"]
		response["userid"] = userId
		response["userimage"] = userInfo["profileImage"]
		response["groups"] = flockClient.get_groups()
		resp = make_response(jsonify(response))
		resp = make_response(jsonify(response))
		resp.headers.set("Access-Control-Allow-Origin", '*')
		return resp, 200
	else:
		return jsonify(response), 200
Exemple #8
0
def configure(request):
    secret = 'fe55371c-2da7-415a-9804-c531ffa000e7'
    encoded = request.GET['flockEventToken']
    data = jwt.decode(encoded, secret, algorithms=['HS256'])
    user_id = data['userId']
    u = User.objects.get(user_id=user_id)
    flock_client = FlockClient(token=u.access_token, app_id=app_id)
    grps = flock_client.get_groups()
    flag = 0
    rett = None
    for i in grps:
        ret = Group.objects.filter(grp_id=i['id'])
        if len(ret) > 0:
            flag = 1
            rett = ret[0]
    context = {}
    if flag == 1:
        u.grp = rett
        u.save()
        context['grp'] = rett
        context['live'] = False
    else:

        context['grps'] = grps

        context['live'] = True

    company_name = (flock_client.get_user_info())['teamId']
    context['company_name'] = company_name
    ccs = Company.objects.filter(team_id=company_name)

    if not ccs:
        context['call'] = True
        context['grps'] = grps
    else:
        context['call'] = False
        cc = ccs[0]
        context['routes'] = Route.objects.filter(flock_group__company=cc)

    context['access_token'] = u.access_token
    return render(request, 'configure.html', context)
Exemple #9
0
def comment(request):
    if (request.method == 'POST'):
        feed_id = request.POST['feed']
        userId = request.POST['userId']
        flock_user_token = Users.objects.get(userId=userId).userToken
        flock_client = FlockClient(token=flock_user_token, app_id=userId)
        userInfo = flock_client.get_user_info()
        userDp = userInfo["profileImage"]
        post = request.POST['post']
        post = post.strip()
        print "yoobitch"
        if len(post) > 0:
            post = post[:255]
            message = Messages.objects.get(primaryKey=feed_id)
            Comments.objects.create_comment(userId=userId,
                                            userName=userInfo["firstName"] +
                                            " " + userInfo["lastName"],
                                            userDp=userDp,
                                            text=post,
                                            parent=message)
            allComments = Comments.objects.filter(
                parent=message).order_by('-date')
            message.numcomments = len(allComments)
            message.save()
            flock_client = FlockClient(token=BOT_TOKEN, app_id=APP_ID)
            user_guid = message.userId
            groupName = message.groupId
            simple_message = Message(
                to=user_guid,
                text="You received a new comment for a post you pinned in " +
                groupName)
            res = flock_client.send_chat(simple_message)
            return render(request, 'feeds/partial_feed_comments.html', {
                'allComments': allComments,
                'user': userId
            })
    else:
        feed_id = request.GET.get('feed')
        userId = request.GET.get('userId')
        message = Messages.objects.get(primaryKey=feed_id)
        allComments = Comments.objects.filter(parent=message).order_by('-date')
        print allComments
        return render(request, 'feeds/partial_feed_comments.html', {
            'allComments': allComments,
            'user': userId
        })
    return HttpResponse(status=400)
Exemple #10
0
from pyflock import FlockClient, verify_event_token
# You probably want to copy this entire line
from pyflock import Message, SendAs, Attachment, Views, WidgetView, HtmlView, ImageView, Image, Download, Button, OpenWidgetAction, OpenBrowserAction, SendToAppAction

#------ This is pyflock demo. The app id is of a pyflock bot for testing

# The test ids and tokens
bot_token = '3fc42e71-8a5c-4f96-802f-b19566b6af34'
user_guid = 'u:vpvv5pem2mzf25e5'
user2_guid = 'u:5qqt9oyaotyrroa5'
group_guid = 'g:1108515948568984819'
app_id = '6dd7e4b0-3340-4a4f-9243-e47cb8da8ee1'
user_token = bot_token  # Store the token against a guid during app install event and retreive it from the user id in event token

#Create a flock client. Needs token and app id for this. You can get the token id and app id when you register. This is for a bot.
flock_client = FlockClient(token=bot_token, app_id=app_id)

res = None

# Send a simple send message
simple_message = Message(to=group_guid, text="Hello, world")
# returns a message id
res = flock_client.send_chat(simple_message)
print(res)

# Send a message using a custom name and profile image
send_as_hal = SendAs(
    name='HAL-9000',
    profile_image=
    'https://pbs.twimg.com/profile_images/1788506913/HAL-MC2_400x400.png')
send_as_message = Message(to=group_guid,
Exemple #11
0
def getgroups(userid):
	token = gettoken(userid)
	client = FlockClient(token=token, app_id=app_id)
	return client.get_groups()
Exemple #12
0
def getfriends(userid):
	token = gettoken(userid)
	client = FlockClient(token=token, app_id=app_id)
	return client.get_contacts()
Exemple #13
0
def listen(request):
    data = json.loads(request.body)
    if data["name"] == "app.install":
        u = User()
        u.access_token = data["token"]
        u.user_id = data["userId"]
        u.save(force_insert=True)
    if data["name"] == "app.uninstall":
        u = User.objects.get(user_id=data["userId"])
        u.delete()
    if data["name"] == "client.slashCommand":
        text = data["text"]
        texts = (text.strip()).split(' ')
        # not really ip @name hai ye
        g = Group.objects.get(grp_id=data["chat"])
        access = ''
        for u in User.objects.all():
            if u.grp.pk == g.pk:
                access = u.access_token
                break

        if (texts[0].strip())[0] != '@':
            # take last message where by = 2, and set that as ipman
            log("here")
            lis = Chat.objects.filter(by=2)
            last_msg = lis[len(lis) - 1]
            log(last_msg)
            ipman = last_msg.ipman
            log("ipname is " + ipman.name)
            text = " ".join(texts)
            log("text is " + str(text))
            msg = Chat()
            msg.text = text
            msg.by = 1
            msg.grp = g
            msg.ip = ipman.ip
            msg.ipman = ipman
            msg.save(force_insert=True)
            text = "'" + text + "' to " + str(msg.ipman.name)
            flock_client = FlockClient(token=access, app_id=app_id)
            send_as_hal = SendAs(
                name=str(data["userName"]),
                profile_image=
                'https://f.flockusercontent2.com/0f2c0301487471044df94e37')
            send_as_message = Message(to=g.grp_id,
                                      text=text,
                                      send_as=send_as_hal)
            res = flock_client.send_chat(send_as_message)
            return HttpResponse('{"text": "Reply Sent to User"}')
        else:
            name = (texts[0].strip())[1:]
            name = name.lower()
            ipman = IPMan.objects.get(name=name)
            text = " ".join(texts[1:])
            msg = Chat()
            msg.text = text
            msg.by = 1
            msg.grp = g
            msg.ip = ipman.ip
            msg.ipman = ipman
            msg.save(force_insert=True)
            text = "'" + text + "' to " + str(msg.ipman.name)
            flock_client = FlockClient(token=access, app_id=app_id)
            send_as_hal = SendAs(
                name=str(data["userName"]),
                profile_image=
                'https://f.flockusercontent2.com/0f2c0301487471044df94e37')
            send_as_message = Message(to=g.grp_id,
                                      text=text,
                                      send_as=send_as_hal)
            res = flock_client.send_chat(send_as_message)
            return HttpResponse('{"text": "Reply Sent to User"}')

    return HttpResponse('listen')
Exemple #14
0
def save_recording(recording_url, callsid, number):
    # log("deleting file")
    # try:
    # os.remove('Twilio.wav')
    # except OSError:
    # pass
    # log("downloading begins")
    #
    # try:
    #     # r = requests.get(recording_url, stream=True)
    #     # if r.status_code == 200:
    #     # with open(os.path.join('/tmp', 'twi_audio.wav'), 'wb') as f:
    #     # # for block in r.iter_content(1024):
    #     #     # f.write(block)
    #     #     r.raw.decode_content = True
    #     #     shutil.copyfileobj(r.raw, f)
    #     # f.close()
    #     # # os.system("wget -O Twilio.wav " + recording_url)
    #     # # time.sleep(5)
    #     urllib.urlretrieve(recording_url, "Twilio.wav")
    #     time.sleep(10)
    # except Exception, e:
    #     log('t1' + e.message)
    #
    # if not os.path.exists('Twilio.wav'):
    #     log('FUCKCKCKCKCKCKCK')
    #
    # log("reco begins")
    # reco = sr.Recognizer()
    # text = "prob"
    # try:
    #     with sr.AudioFile('Twilio.wav') as source:  # use "test.wav" as the audio source
    #         audio = reco.record(source)  # extract audio data from the file
    #     try:
    #         text = reco.recognize_google(audio, language="en-us", show_all=False)
    #         log("text is " + str(text))
    #     except LookupError:  # speech is unintelligible
    #         text = "Problem understanding"
    #         log(text)
    #         # print("Could not understand audio")
    # except Exception, e:
    #     log('t2' + e.message)

    text = requests.post(NGROK_URL, data={'recording_url': recording_url}).text
    log(text)
    # send text to flock,
    companies = Company.objects.filter(
        number=TWILIO_DEFAULT_CALLERID).order_by('pk')
    company = companies[len(companies) - 1]
    lis = MobUser.objects.filter(call_sid=callsid).order_by('pk')
    mobuser = lis[0]
    r = Route.objects.filter(digits=mobuser.interaction,
                             flock_group__company=company).order_by('pk')[0]
    flock_client = FlockClient(token=r.flock_group.access_token, app_id=app_id)
    sidebar_url = "https://peaceful-hollows-95315.herokuapp.com/claim_call/?callsid=" + callsid + '&group_id=' + \
                  r.flock_group.group_id.split(':')[1] + '&number=' + number

    log(sidebar_url)
    text = text[0].upper() + text[1:].lower()
    text_payload = text
    b1 = Button(name="Claim Ticket",
                id="1",
                action=OpenWidgetAction(url=sidebar_url,
                                        desktop_type="sidebar"))
    attachment = Attachment(title="Incoming Call", buttons=[b1])
    send_as_hal = SendAs(
        name='@' + mobuser.number + ' on Call',
        profile_image='https://f.flockusercontent2.com/0f2c03014874710062189cbe'
    )

    button_message = Message(to=r.flock_group.group_id,
                             text=text_payload,
                             attachments=[attachment],
                             send_as=send_as_hal)

    res = flock_client.send_chat(button_message)
    log(res)
    return HttpResponse('ok')
Exemple #15
0
def events(request, format=None):

    #	urllib3.disable_warnings()
    if (request.method == 'POST'):
        event_token = request.META["HTTP_X_FLOCK_EVENT_TOKEN"]
        try:
            verify_event_token(event_token=event_token, app_secret=APP_SECRET)
        except:
            return Response(request.data, status=400)
        content = json.loads(JSONRenderer().render(request.data))
        if (content["name"] == "app.install"):
            user = Users.objects.create_user(userId=content["userId"],
                                             userToken=content["token"])
            return Response(request.data, status=200)

        elif (content["name"] == "client.messageAction"):
            flock_user = content["userId"]
            flock_user_name = content["userName"]
            groupId = content["chat"]
            groupName = content["chatName"]
            isPinned = True
            messageUid = content["messageUids"][0]
            if (len(Messages.objects.filter(messageUid=messageUid)) != 0):
                return Response(request.data, status=400)
            flock_user_token = Users.objects.get(userId=flock_user).userToken
            flock_client = FlockClient(token=flock_user_token,
                                       app_id=flock_user)
            userDp = flock_client.get_user_info()["profileImage"]
            msg_details = requests.get(
                "https://api.flock.co/v1/chat.fetchMessages",
                params={
                    "token": flock_user_token,
                    "uids": "[" + messageUid + "]",
                    "chat": groupId
                })
            text = json.loads(msg_details.text)[0]["text"]
            if (flock_user != json.loads(msg_details.text)[0]["from"]):
                return Response(request.data, status=400)
            message = Messages.objects.create_message(
                flock_user=flock_user,
                flock_user_name=flock_user_name,
                userDp=userDp,
                groupId=groupId,
                isPinned=isPinned,
                text=text,
                messageUid=messageUid)
            message.save()
            allmembers = flock_client.get_group_members(groupId)
            for i in range(0, len(allmembers)):
                flock_client = FlockClient(token=BOT_TOKEN, app_id=APP_ID)
                user_guid = allmembers[i]["id"]
                simple_message = ""
                if (user_guid != flock_user):
                    simple_message = Message(to=user_guid,
                                             text=flock_user_name +
                                             " pinned a message in group " +
                                             groupName)
                else:
                    simple_message = Message(
                        to=user_guid,
                        text="You pinned a message in group " + groupName)
                res = flock_client.send_chat(simple_message)
            return Response(request.data, status=200)

        elif (content["name"] == "app.uninstall"):
            user = User.objects.get(userId=content["userId"])
            user.delete()
            return Response(request.data, status=200)

    return Response(request.data, status=400)