Skip to content

Commit 7f24cb4

Browse files
author
Mike Holloway
committed
update included err-backend-cisco-webex-teams to 1.4.0 release
1 parent 7317c78 commit 7f24cb4

File tree

3 files changed

+52
-4
lines changed

3 files changed

+52
-4
lines changed

Diff for: docker-compose-swarmstack.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ configs:
2929

3030
services:
3131
errbot:
32-
image: swarmstack/errbot-docker
32+
image: swarmstack/errbot-docker:5.2.0
3333
configs:
3434
- source: errbot_config
3535
target: /err/config.py

Diff for: docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ configs:
1717

1818
services:
1919
errbot:
20-
image: swarmstack/errbot-docker
20+
image: swarmstack/errbot-docker:5.2.0
2121
configs:
2222
- source: errbot_config
2323
target: /err/config.py

Diff for: local_backends/err-backend-cisco-webex-teams/CiscoWebexTeams.py

+50-2
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
import logging
66
import uuid
77
import websockets
8+
import string
9+
import random
10+
import os
811
from markdown import markdown
912

1013
from errbot.core import ErrBot
11-
from errbot.backends.base import Message, Person, Room, RoomOccupant, OFFLINE, RoomDoesNotExistError
14+
from errbot.backends.base import Message, Person, Room, RoomOccupant, OFFLINE, RoomDoesNotExistError, Stream
1215
from errbot import rendering
1316

1417
import webexteamssdk
1518

19+
__version__="1.4.0"
20+
1621
log = logging.getLogger('errbot.backends.CiscoWebexTeams')
1722

1823
CISCO_WEBEX_TEAMS_MESSAGE_SIZE_LIMIT = 7439
@@ -24,7 +29,7 @@
2429
"deviceType" : "DESKTOP",
2530
"localizedModel": "python",
2631
"model" : "python",
27-
"name" : "python-webex-teams-client",
32+
"name" : f"python-webex-teams-client-{''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5))}",
2833
"systemName" : "python-webex-teams-client",
2934
"systemVersion" : "0.1"
3035
}
@@ -523,6 +528,47 @@ def send_message(self, mess):
523528
else:
524529
self.webex_teams_api.messages.create(roomId=mess.to.room.id, text=mess.body, markdown=md)
525530

531+
def _teams_upload(self, stream):
532+
"""
533+
Performs an upload defined in a stream
534+
:param stream: Stream object
535+
:return: None
536+
"""
537+
538+
try:
539+
stream.accept()
540+
log.exception(f'Upload of {stream.raw.name} to {stream.identifier} has started.')
541+
542+
if type(stream.identifier) == CiscoWebexTeamsPerson:
543+
self.webex_teams_api.messages.create(toPersonId=stream.identifier.id, files=[stream.raw.name])
544+
else:
545+
self.webex_teams_api.messages.create(roomId=stream.identifier.room.id, files=[stream.raw.name])
546+
547+
stream.success()
548+
log.exception(f'Upload of {stream.raw.name} to {stream.identifier} has completed.')
549+
550+
except Exception:
551+
stream.error()
552+
log.exception(f'Upload of {stream.raw.name} to {stream.identifier} has failed.')
553+
554+
finally:
555+
stream.close()
556+
557+
def send_stream_request(self, identifier, fsource, name='file', size=None, stream_type=None):
558+
"""
559+
Send a file to Cisco Webex Teams
560+
561+
:param user: is the identifier of the person you want to send it to.
562+
:param fsource: is a file object you want to send.
563+
:param name: is an optional filename for it.
564+
:param size: not supported in Webex Teams backend
565+
:param stream_type: not supported in Webex Teams backend
566+
"""
567+
log.debug(f'Requesting upload of {fsource.name} to {identifier}.')
568+
stream = Stream(identifier, fsource, name, size, stream_type)
569+
self.thread_pool.apply_async(self._teams_upload, (stream,))
570+
return stream
571+
526572
def build_reply(self, mess, text=None, private=False, threaded=False):
527573
"""
528574
Build a reply in the format expected by errbot by swapping the to and from source and destination
@@ -563,6 +609,8 @@ async def _run():
563609
}
564610
await ws.send(json.dumps(msg))
565611

612+
self.reset_reconnection_count()
613+
566614
while True:
567615
message = await ws.recv()
568616
logging.debug("WebSocket Received Message(raw): %s\n" % message)

0 commit comments

Comments
 (0)