{"id":25352071,"url":"https://github.com/kstrauser/seshat","last_synced_at":"2025-10-29T20:31:22.754Z","repository":{"id":1511106,"uuid":"1768260","full_name":"kstrauser/seshat","owner":"kstrauser","description":"Sessioned chat system for Pyramid, using Ajax for web clients and Jabber for local users","archived":false,"fork":false,"pushed_at":"2011-06-23T15:36:10.000Z","size":114,"stargazers_count":18,"open_issues_count":1,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-07T11:57:35.527Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kstrauser.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-05-18T21:03:21.000Z","updated_at":"2019-07-28T13:50:01.000Z","dependencies_parsed_at":"2022-08-16T13:31:18.334Z","dependency_job_id":null,"html_url":"https://github.com/kstrauser/seshat","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kstrauser%2Fseshat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kstrauser%2Fseshat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kstrauser%2Fseshat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kstrauser%2Fseshat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kstrauser","download_url":"https://codeload.github.com/kstrauser/seshat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238818520,"owners_count":19535743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-14T18:26:34.320Z","updated_at":"2025-10-29T20:31:17.452Z","avatar_url":"https://github.com/kstrauser.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Seshat is a realtime chat system for web applications. It consists of\nseveral components:\n\n* HTML and CSS snippets that you can embed in your web templates. They\ndescribe an Ajax-powered chat interface using\n* jQuery, which polls your web application via\n* A client library, which uses\n* A backend API running on SQLite to talk to\n* A \"broker bot\" which relays messages from the backend to\n* An account on any Jabber/XMPP server, which carries on conversations\n* A set of other Jabber/XMPP accounts of your choosing.\n\nOr more simply:\n\n    Visitor \u003c-\u003e your website \u003c-\u003e broker bot \u003c-\u003e Jabber server \u003c-\u003e employees\n\n# Status\n\nSeshat works, and all the components needed to build a working web chat\nsystem are present. No unit tests are written yet, but those should come\nshortly.\n\n# Requirements\n\nserver.py requires xmpppy, which can be installed by `pip install xmpppy`.\n\n# Configuration\n\nThe server needs:\n\n* A Jabber username to log in as,\n* The password for that account,\n* A list of localusers to receive chat requests, and\n* The path to a SQLite database (which it will create if it doesn't already\nexist).\n\nThe client needs:\n\n* The path to a SQLite database (which it will create if it doesn't already\nexist).\n\n# Usage\n\n[Docs about adding the HTML to your web app]\n\nCreate an account on your Jabber server that the \"server.py\" broker bot can\nlog into. This is that account that will send messages to the other accounts\ndefined in \"localusers\" in the .ini file.\n\nAs a convenience, \"server.py\" can be run from the command line with the name\nof a .ini config file and the name of the section to search for its\nsettings. This is a complete Seshat config file:\n\n    [Seshat]\n    sqlitedb = /tmp/seshat.db\n    localusers = joe@example.com, bob@customerservice.example.com\n    username = webchat@example.com\n    password = mypassword\n\nIf it were named \"sample.ini\", you could run the server with the command\nline:\n\n    $ ./server.py sample.ini Seshat\n\n# Chatting\n\nWhen a visitor opens a chat, the broker bot will send a notification to\nevery online local user. When one of the users \"accepts\" the chat, any\nmessage they type into their chat window will be displayed on the visitor's\nweb page. Anything the visitor types will be relayed to the local user's\nchat window. The broker bot responds to several commands which can be\nentered into the local user's chat window:\n\n* !ACCEPT n - Accept chat request #n\n* !CANCEL n - Cancel chat request #n\n* !FINISH - Close your current chat\n* !HELP - Show available commands\n* !STATUS - Show your current chat status\n* !WAITING - Show all open chat requests\n\nNew commands are extremely easy to add. If you can write Python code, you\ncan create your own broker bot commands.\n\n# Example chat session\n\nLines starting with \"\u003e\" indicate text sent to the local user. Lines starting\nwith \"\u003c\" indicate replies sent to the visitor.\n\n    Visitor clicks a link to start a chat\n    \u003e Remote user 'customer' wants to start a conversation. To accept this request, reply with the message '!ACCEPT 42'.\n    User types: !ACCEPT 42\n    \u003e You are now handling chat #42. Send '!FINISH' when you are done.\n    \u003c Your chat has started.\n    Visitor types: Hi!\n    \u003e Hi!\n    User types: Hello, customer.\n    \u003c Hello, customer.\n    Visitor types: Talk to you later!\n    \u003e Talk to you later!\n    User types: !FINISH\n    \u003e The chat is now closed.\n    \u003c The chat is now closed.\n\n# About\n\nSeshat was written by Kirk Strauser \u003ckirk@strauser.com\u003e for his employer,\nDaycos \u003chttp://www.daycos.com/\u003e and released as an open source project with\nthe permission of Brandon Day.\n\nThe name is short for \"Sessioned Chat\", and refers to the fact that all\nconversations are assigned unique \"chatid\" identifiers, so that many\nvisitors can chat with many internal users at the same time without\ninterfering with each other.\n\nSeshat is also the name of the Egyption goddess of wisdom, knowledge, and\nwriting. This is pure coincidence.\n\n# Credits\n\nInspiration for building the chat window (and bits of HTML and CSS) came\nfrom:\n\nhttp://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/\n\n# License\n\nThe standalone broker bot uses the GPL-licensed xmpppy library, and is thus\nalso distributed under the GPL (v3 or later).\n\nThe client library and SQLite backend are distributed under the terms of the\nBSD License.\n\nThe practical effect of the distinction is that you can use the Seshat\nsystem in your own web application without licensing that application under\nthe GPL.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkstrauser%2Fseshat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkstrauser%2Fseshat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkstrauser%2Fseshat/lists"}