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')
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))
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})
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)
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
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)
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
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)
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)
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,
def getgroups(userid): token = gettoken(userid) client = FlockClient(token=token, app_id=app_id) return client.get_groups()
def getfriends(userid): token = gettoken(userid) client = FlockClient(token=token, app_id=app_id) return client.get_contacts()
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')
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')
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)