├── .dockerignore ├── .env.example ├── .flake8 ├── .github └── workflows │ ├── docker_build_push.yml │ ├── python-server-test.yml │ └── python-test.yml ├── .gitignore ├── .gitmodules ├── .pre-commit-config.yaml ├── BUILD.md ├── LICENSE ├── README.md ├── archive └── the_first.vcon ├── docs ├── Communications Design(1).jpg ├── What is a vCon .pdf └── vCons_ an Open Standard for Conversation Data.pdf └── tools ├── embed_streamlit_demo.html └── postgres_schema.sql /.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore the following files and directories: 2 | .data 3 | .dockerignore 4 | .docker 5 | .git 6 | .gitignore 7 | .pytest_cache 8 | .vscode 9 | __pycache__ 10 | *.pyc 11 | *.pyo 12 | *.pyd 13 | *.egg-info 14 | dist 15 | build 16 | *.egg 17 | *.log 18 | *.swp 19 | *.swo 20 | *.pyc 21 | *.pyo 22 | *.DS_Store 23 | *.idea 24 | *.coverage 25 | .coverage 26 | docs 27 | examples 28 | htmlcov 29 | test-reports 30 | venv -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | DEEPGRAM_KEY= 2 | ENV=dev 3 | HOSTNAME=http://localhost:8000 4 | REDIS_URL=redis://redis 5 | 6 | # Leave this blank to disable API security 7 | # You set this before opening the port in your firewall 8 | CONSERVER_API_TOKEN= 9 | 10 | # to customize the config copy example_config.yml to config.yml 11 | # modify the values in config.yml as needed 12 | # and set CONSERVER_CONFIG_FILE to ./config.yml below 13 | CONSERVER_CONFIG_FILE= 14 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | exclude = 3 | ./venv/ 4 | ./vcon/ 5 | __pycache__ 6 | 7 | max-line-length = 130 8 | ignore = E203,W503 9 | select = F,E -------------------------------------------------------------------------------- /.github/workflows/docker_build_push.yml: -------------------------------------------------------------------------------- 1 | name: Build and Push Docker Image 2 | 3 | on: 4 | push: 5 | branches: 6 | - main # Trigger on updates to the main branch 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout Code 14 | uses: actions/checkout@v2 15 | 16 | - name: Login to DockerHub 17 | uses: docker/login-action@v1 18 | with: 19 | username: ${{ secrets.DOCKER_USERNAME }} 20 | password: ${{ secrets.DOCKER_PASSWORD }} 21 | 22 | - name: Build and Push Docker Image 23 | uses: docker/build-push-action@v2 24 | with: 25 | context: . 26 | push: true 27 | tags: howethomas/conserver:latest 28 | -------------------------------------------------------------------------------- /.github/workflows/python-server-test.yml: -------------------------------------------------------------------------------- 1 | name: Python conserver unit test 2 | on: 3 | push: 4 | # all 5 | pull_request: 6 | # all PRs for now 7 | #branches: [ $default-branch ] 8 | 9 | jobs: 10 | # Label of the runner job 11 | server-utest-python-version: 12 | # You must use a Linux environment when using service containers or container jobs 13 | runs-on: ubuntu-latest 14 | 15 | strategy: 16 | fail-fast: false 17 | matrix: 18 | python-version: ["3.8", "3.9", "3.10"] 19 | 20 | # Service containers to run with `runner-job` 21 | services: 22 | # Label used to access the service container 23 | redis: 24 | # Docker Hub image. Need stack for JSON path operations support 25 | image: redis/redis-stack-server 26 | # Set health checks to wait until redis has started 27 | options: >- 28 | --health-cmd "redis-cli ping" 29 | --health-interval 10s 30 | --health-timeout 5s 31 | --health-retries 5 32 | ports: 33 | # Maps port 6379 on service container to the host 34 | - 6379:6379 35 | 36 | steps: 37 | - name: checkout ${{ github.ref }} 38 | # Downloads a copy of the code in your repository before running CI tests 39 | uses: actions/checkout@v3 40 | 41 | - name: Set up Python ${{ matrix.python-version }} os ${{ runner.os }} 42 | uses: actions/setup-python@v3 43 | with: 44 | python-version: ${{ matrix.python-version }} 45 | cache: 'pip' 46 | # This does not seem to actually load the pip dev packages. However 47 | # leaving this in so that it does not pull in **/requirements.txt 48 | # and its supposed to be used in the hash for the cache to determine 49 | # if a re-build is needed. 50 | cache-dependency-path: | 51 | vcon/docker_dev/pip_dev_package_list.txt 52 | vcon/docker_dev/pip_package_list.txt 53 | vcon/docker_dev/pip_server_requirements.txt 54 | 55 | # Performs a clean installation of all dependencies in the `package.json` file 56 | # For more information, see https://docs.npmjs.com/cli/ci.html 57 | - name: Install redis-cli 58 | run: | 59 | sudo apt-get install redis-tools 60 | 61 | - name: Test connection and operations with Redis 62 | # Runs a script that creates a Redis client, populates 63 | # the client with data, and retrieves data 64 | run: | 65 | # make sure we can connect and get response from redis server 66 | export PING_OUT=`redis-cli -n 0 -h ${REDIS_HOST} -p ${REDIS_PORT} PING` 67 | if [ "${PING_OUT}" == "PONG" ]; then echo "redis connection succeeded"; else echo "cli return: ${PING_OUT}"; exit 1; fi 68 | 69 | # confirm only one user of this server 70 | if [ "`redis-cli -n 0 SADD PY_V ${{ matrix.python-version }}`" -eq 1 ]; then echo "no other python ${{matrix.python-version}} user of redis"; else echo "existing python ${{ matrix.python-version }} user of redis"; exit 2; fi 71 | sleep 10 72 | redis-cli -n 0 SMEMBERS PY_V 73 | export PY_V_COUNT=`redis-cli -n 0 SCARD PY_V` 74 | if [ "${PY_V_COUNT}" -eq 1 ]; then echo "one user of redis"; else echo "${PY_V_COUNT} users of redis"; exit 2; fi 75 | 76 | # Verify that we have support of JSON path operations in redis server 77 | redis-cli -n 0 JSON.SET v '$' '{"a": "aaa"}' 78 | redis-cli -n 0 JSON.GET v '$.a' 79 | 80 | # Environment variables 81 | env: 82 | # The hostname used to communicate with the Redis service container 83 | REDIS_HOST: localhost 84 | # The default Redis port 85 | REDIS_PORT: 6379 86 | 87 | - name: Install dependencies 88 | run: | 89 | pwd 90 | ls -l vcon/docker_dev 91 | # Pull out comments and python3 specific packages as the platform already has that 92 | sudo apt-get update 93 | apt-cache madison ffmpeg 94 | apt-cache depends ffmpeg 95 | apt-cache depends ffmpeg=7:4.4.1-3ubuntu5 96 | apt-cache depends ffmpeg=7:4.4.2-0ubuntu0.22.04.1 97 | apt-cache depends ffmpeg=7:4.4.2-0ubuntu0.22.04.1 98 | apt-cache madison intel-media-va-driver 99 | apt-cache depends intel-media-va-driver 100 | echo "Installing apt packages: " $(grep -vE "^\s*#" vcon/docker_dev/apt_package_list.txt | grep -v python3.8 | tr "\n" " ") 101 | sudo apt-get install -y --fix-missing $(grep -vE "^\s*#" vcon/docker_dev/apt_package_list.txt | grep -v python3.8 | tr "\n" " ") 102 | # get latest pip install package list 103 | python -m pip install --upgrade pip 104 | #python -m pip install flake8 pytest 105 | #if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 106 | pip install -r vcon/docker_dev/pip_dev_package_list.txt 107 | pip install -r vcon/docker_dev/pip_package_list.txt 108 | pip install -r vcon/docker_dev/pip_server_requirements.txt 109 | pip freeze | grep stable 110 | pip freeze | grep whisper 111 | python3 -c "import stable_whisper;print(stable_whisper.__version__)" 112 | 113 | - name: Test conserver package with pytest 114 | run: | 115 | # Run all Vcon package unit tests 116 | (cd server; pytest -v -rP tests) 117 | 118 | - name: fix pip cache issue by creating dir 119 | run: | 120 | mkdir -p -- "$(pip cache dir)" 121 | echo "$(pip cache dir)" 122 | 123 | -------------------------------------------------------------------------------- /.github/workflows/python-test.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a variety of Python versions 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python 3 | 4 | name: Python vcon unit test 5 | 6 | on: 7 | push: 8 | #branches: [ $default-branch ] 9 | pull_request: 10 | # all PRs for now 11 | #branches: [ $default-branch ] 12 | 13 | jobs: 14 | vcon-utest-python-version: 15 | 16 | runs-on: ubuntu-latest 17 | strategy: 18 | fail-fast: false 19 | matrix: 20 | python-version: ["3.8", "3.9", "3.10"] 21 | 22 | steps: 23 | - name: checkout ${{ github.ref }} 24 | uses: actions/checkout@v3 25 | 26 | - name: Set up Python ${{ matrix.python-version }} os ${{ runner.os }} 27 | uses: actions/setup-python@v3 28 | with: 29 | python-version: ${{ matrix.python-version }} 30 | cache: 'pip' 31 | # This does not seem to actually load the pip dev packages. However 32 | # leaving this in so that it does not pull in **/requirements.txt 33 | cache-dependency-path: vcon/docker_dev/pip_dev_package_list.txt 34 | 35 | - name: Install dependencies 36 | run: | 37 | pwd 38 | ls -l vcon/docker_dev 39 | # Pull out comments and python3 specific packages as the platform already has that 40 | sudo apt-get update 41 | apt-cache madison ffmpeg 42 | apt-cache depends ffmpeg 43 | apt-cache depends ffmpeg=7:4.4.1-3ubuntu5 44 | apt-cache depends ffmpeg=7:4.4.2-0ubuntu0.22.04.1 45 | apt-cache depends ffmpeg=7:4.4.2-0ubuntu0.22.04.1 46 | apt-cache madison intel-media-va-driver 47 | apt-cache depends intel-media-va-driver 48 | echo "Installing apt packages: " $(grep -vE "^\s*#" vcon/docker_dev/apt_package_list.txt | grep -v python3 | tr "\n" " ") 49 | sudo apt-get install -y --fix-missing $(grep -vE "^\s*#" vcon/docker_dev/apt_package_list.txt | grep -v python3 | tr "\n" " ") 50 | python -m pip install --upgrade pip 51 | pip install -r vcon/docker_dev/pip_dev_package_list.txt 52 | pip install -r vcon/docker_dev/pip_package_list.txt 53 | #pip install -r vcon/docker_dev/pip_server_requirements.txt 54 | pip freeze | grep stable 55 | pip freeze | grep whisper 56 | python3 -c "import stable_whisper;print(stable_whisper.__version__)" 57 | 58 | - name: Lint catastrophic errors with flake8 59 | run: | 60 | # stop the build if there are Python syntax errors or undefined names 61 | # TODO: need to get to the point where we can run this without exit-zero 62 | flake8 . --count --exit-zero --select=E9,F63,F7,F82 --show-source --statistics 63 | - name: Lint stylistic errors with flake8 64 | run: | 65 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 66 | flake8 . --count --exit-zero --ignore=E111,E114,E121,E123,E126,E128,E251,E261,E265,E275 --max-complexity=10 --max-line-length=127 --statistics 67 | 68 | - name: Test Vcon core package with pytest 69 | run: | 70 | # Run all Vcon package unit tests 71 | pytest -v -rP tests 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.env 2 | **/*.swp 3 | **/*.swo 4 | dist 5 | src 6 | layers 7 | venv 8 | vcon.egg-info 9 | **/__pycache__ 10 | server/static/*.wav 11 | server/static/*.mp3 12 | server/static/*.ogg 13 | .DS_Store 14 | server/.DS_Store 15 | **/dump.rdb 16 | **/*.ipynb 17 | **/tasks.csv 18 | 19 | 20 | .vscode 21 | server/.vscode 22 | dump.rdb 23 | .data 24 | tmp 25 | docker-compose.override.yml 26 | admin/.streamlit/secrets.toml 27 | admin/.streamlit/config.toml 28 | admin/.streamlit/*.pem 29 | admin/.streamlit/*.pkl 30 | admin/.streamlit/*.csv 31 | 32 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "vcon-server"] 2 | path = vcon-server 3 | url = https://github.com/vcon-dev/vcon-server 4 | branch = main 5 | [submodule "vcon-right-to-know"] 6 | path = vcon-right-to-know 7 | url = https://github.com/vcon-dev/vcon-right-to-know 8 | [submodule "vcon-admin"] 9 | path = vcon-admin 10 | url = https://github.com/vcon-dev/vcon-admin 11 | branch = main 12 | [submodule "vcon-faker"] 13 | path = vcon-faker 14 | url = https://github.com/vcon-dev/vcon_faker 15 | [submodule "conversation-gpt"] 16 | path = conversation-gpt 17 | url = https://github.com/vcon-dev/conversation_gpt 18 | [submodule "fake-vcons"] 19 | path = fake-vcons 20 | url = https://github.com/vcon-dev/fake-vcons 21 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/psf/black 3 | rev: 23.1.0 4 | hooks: 5 | - id: black 6 | language_version: python3.8 7 | files: ^server/ 8 | - repo: https://github.com/PyCQA/flake8 9 | rev: 6.0.0 10 | hooks: 11 | - id: flake8 12 | files: ^server/ 13 | -------------------------------------------------------------------------------- /BUILD.md: -------------------------------------------------------------------------------- 1 | # Build Instructions 2 | 3 | + [Building Vcon core package](#building-vcon-core-package) 4 | + [Building the conserver package](#building-the-conserver-package) 5 | 6 | ## Building Vcon core package 7 | 8 | Make sure python build and twine packages are installed: 9 | 10 | pip3 install --upgrade build twine 11 | 12 | Create a clean clone of the branch that you want to build as any files in your development area may get accidently included in the vcon package: 13 | 14 | get clone https://github.com/vcon-dev/vcon.git 15 | git checkout [xxxxx_commit_SHA] 16 | 17 | Update the package __version__ number in vcon/vcon/__init__.py 18 | 19 | Be sure to clean out the dist directory: 20 | 21 | rm dist/* 22 | 23 | In vcon directory (root containing setup.py and vcon sub-directory): 24 | 25 | python3 -m build 26 | 27 | This creates sub-directory dist containing (x.x in the names below represents the version number): 28 | 29 | * vcon-x.x-py3-none-any.whl 30 | * vcon-x.x.tar.gz 31 | 32 | Push the package install files up to the pypi repo. 33 | 34 | For the test repo: 35 | 36 | python3 -m twine upload --repository testpypi dist/* 37 | 38 | For the real/public repo: 39 | 40 | python3 -m twine upload dist/* 41 | 42 | Commit all of the changes and tag the build release: 43 | 44 | git tag -a vcon_x.x [xxxxx_commit_SHA] -m "Vcon pypi release" 45 | 46 | ## Building the conserver package 47 | 48 | TBD 49 | 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 vcon-dev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Home Repo for vCons and the Conserver 2 | 3 | ## Introduction 4 | vCons are PDFs for human conversations, defining them so they can be shared, analyzed and secured. The Conserver is a domain specific data platform based on vCons, converting the raw materials of recorded conversations into self-serve data sources for any team. The Conserver represents the most modern set of tools for data engineers to responsibly and scalably use customer conversations in data pipelines. 5 | 6 | The Vcon library consists of two primary components: 7 | 8 | * The Python Vcon package for constructing and operating on Vcon objects 9 | * The Conserver for storing, managing and manipulating Vcon objects and operation streams on Vcon objects 10 | 11 | ## Table of Contents 12 | 13 | + [Presentations, Whitepapers and Tutorials](#presentations-whitepapers-and-tutorials) 14 | + [vCon Library Quick Start for Python](https://github.com/vcon-dev/vcon/wiki/Library-Quick-Start) 15 | + [Testing the Vcon Package](#testing-the-vcon-package) 16 | + [Testing the conserver](#testing-the-conserver) 17 | 18 | ## Presentations, Whitepapers and Tutorials 19 | 20 | See the [Birds of a Feather session at IETF 116, Yokohama](https://youtu.be/EF2OMbo6Qj4) 21 | 22 | See the [presentation at TADSummit](https://youtu.be/ZBRJ6FcVblc) 23 | 24 | See the [presentation at IETF](https://youtu.be/dJsPzZITr_g?t=243) 25 | 26 | See the [presentation at IIT](https://youtu.be/s-pjgpBOQqc) 27 | 28 | Read the [IETF draft proposal](https://datatracker.ietf.org/doc/html/draft-petrie-vcon-01) 29 | 30 | Read the [white paper](https://docs.google.com/document/d/1TV8j29knVoOJcZvMHVFDaan0OVfraH_-nrS5gW4-DEA/edit?usp=sharing) 31 | 32 | See the [key note proposal for vCons](https://blog.tadsummit.com/2021/12/08/strolid-keynote-vcons/). 33 | 34 | 35 | ## Testing the Vcon Package 36 | A suite of pytest unit tests exist for the Vcon package in: [tests](tests) 37 | 38 | These can be run using the following command in the current directory: 39 | 40 | pytest -v -rP tests 41 | 42 | 43 | Please also run separately the following unit test as it will check for spurious stdout from the Vcon package that will likely cause the CLI to break: 44 | 45 | pytest -v -rP tests/test_vcon_cli.py 46 | 47 | Note: These errors may not show up when you run test_vcon_cli.py with the rest of the unit tests as some stdout may only occur when the Vcon package is first imported and may not get trapped/detected by other unit tests. 48 | 49 | 50 | ## Testing the conserver 51 | A suite of pytest unit tests exist for the conserver in: [server/tests](server/tests) 52 | 53 | Running and testing the conserver requires a running instance of Redis. 54 | Be sure to create and edit your server/.env file to reflect your redis server address and port. 55 | It can be generated like the following command line: 56 | 57 | cat <.env 58 | #!/usr/bin/sh 59 | export DEEPGRAM_KEY=ccccccccccccc 60 | export ENV=dev 61 | export HOSTNAME=http://0.0.0.0:8000 62 | export REDIS_URL=redis://172.17.0.4:6379 63 | EOF 64 | 65 | The unit tests for the conserver can be run using the following command in the server directory: 66 | 67 | source .env 68 | pytest -v -rP tests 69 | 70 | -------------------------------------------------------------------------------- /archive/the_first.vcon: -------------------------------------------------------------------------------- 1 | {"vcon": "0.0.1", "parties": [{"tel": "+19175887311"}, {"tel": "11361"}], "dialog": [{"type": "recording", "start": "Wed, 18 May 2022 23:05:05 -0000", "duration": 4.72, "parties": [0, 1], "mimetype": "audio/x-wav", "filename": "q-11361-+19175887311-20220518-190505-1652915105.1150310.WAV", "encoding": "base64url", "body": "UklGRioeAABXQVZFZm10IBQAAAAxAAEAQB8AAFkGAABBAAAAAgBAAWZhY3QEAAAAgJMAAGRhdGH2HQAAoxjXHYXCRekuye4gK4Tsiv4wZeNhtuvu3RMkgyPXme4NeahQLG0yeLayx5HCIiRWK7psbQrQTFm57NwQJvIbq1aNxk6VpMYAXSm5Bb1rgStIStvEzmCaOIabxs2gjReJ02Rk0BQtOxHkhUTIZd4VGKoq1KuoCGhrZTx1vRZICuZEcgkGjdH2jiCU1a0NMW6BE8lVHN-OYFPHcZspr0CSl1aeo2hOWUx3CbovpGqKsApWteunk8gMPMOdynRVFWR5o0l2BvaQDcWugGRHrQa9NcEbG1LWQq_AWLpsXKdMQefGrZu4ZE2ZSDIRGJLTKpIzDybqSyZishQmjuVGztMKNlcyt2vW546JsutgllyppQWroAtHbkyrrGAx3bIiX81g1sR-oVaBbtkobA08fpJYscQSlHHcGm7hDriuWTRm8A6GKQ1Fbcn10M30DcHctnEchwaAI7dxI2knYCQ5biNHB2Djxm3bFmyU5TA3ALZt3DaSeABIkiRJcm0AxpEkSZI7AEiSJEmSwUYZ1mQLYNu2bdumPWDbtm3b9gOAJEmSJFkFgCRJkiQZbHRhTccDtm3btm0qAEaOJEmSPABIkiRJkjAASJIkSZLBRhfW9CKAJEmS49gCgCRJkiQ5P2Dbtm3bZgSAJEmSJClkcmVNLgBIkiRJkm8ASJIkSZIvAkiSJEmOswM2btu2bcMVmd3kIoDkyJEkySOAJEmS3AgGgCRJkhypC2DjuG3j9mxOWQiyEUQ1DAtyvQJS9aTWWc4KuFqLO9F4CCJX4yeFkMaSUWSLYMkYinzGa4HzyrEi6-pgHVdXe6mugKzW7VqHYOzcDDsXWnJkeVXHFKpuLDZSrAroZOQohtASpE4dyZSRxozJQC6hJE2OLGiNYLM1ruIWzsCcRhEW6c3AJhq6bmp9cZ0IvAy2a5xJVcUMNE8Qq3G0CEJy30SNxwrUqUy5NczWkI3S7UCk4iyrBM3AzCvJqkisQPQkcekWjYDoJk4DpWiPmUzXCtKFMkuy1g7MtWnrqLwMSqpjR8vXDipSKzk1D-bOjdLzgNQollapqqCUmjChmctA6jRmYPOLYJtHbatocTAZCfAQ3LHs6O2zDuCC_LyStAgkklFHZesUspXsSr0S5lCRYg-hXc2tKqMsgeqYkNzSVmLc9mk08zbhzUKO3fhkzJQsvBTCcNk2s-oUxO5zpatkETyFn-xtrxRaTR0hZk3WDo5ELiFWOq7hmMxgKjdcY0SO4Fk7cijHC6EYNXEZI6oDUQz2EeJMMh1orxSOup04uUUjOtyjwVQ3HdhpuSRyJv0WzpRTo-so7pMpdgKWUk0jlEwjiqBJAwcuw5lca39VznGdMLAg6o-EEenbKEQxgkeS0xxEteISQcQUNPm8KxaV1xKKIq-BFEpsm_bjIFPLiJwpRoEoSZEuqWuBJLuu1oxZC8ksQB0Wkt_IqrwaSMq8p4mzEPrFksdx9i9KZVv36AvGkMmyKsHI864U2eThk-iNKRsvgRsqL1vMTUHbPK2ZqVwNHW3oEIay3EaN7xJGgV4mmK8Q1k0O4jHPCFpRzHYxBtbOEZFMQeMoOVQ2F8GTOXvh9-qARmvOaH9MYaOpdTIFaS-ZJO4OGmZOvo3fEig5M8lQvwxinfXKhc4QrPGM0pIJthKKkixBYjvlZJlNwXTljSW8VWFex6tshg7BUiVuU8VoDtlMwRBEkqXknPYWWNFMRtW_FMhsVIpV4RDESZlqtFXHVI3GSmHZyNFMV24h48qsHAdLYeumkSKhTYG1Qp0LpWhr1UitEmaJ1DxuXwgGEe62VbkIUKKbdkv2CFhIZMdnkebSjRKzoCG7Uc32ywDkqkauEsuAzOqK1vnNoKFOtloMaa5YBWwbZI_aPtKzFMpyqx7WNBXEqt43TasSiiaAKW8U2NSFxMuA6htzZ8ougZAbtgLVamHcwpHZgq6B40DSETuvriVpKyFIUpxogTQvwrBFaY5MScRRE6GFMFGqYp5L26r4Eo2kooM941UsSSRC6NVuXVFmol1pueTN7sLdPY-uiHbuECmzJFAvywh-KivWrRRtmK4u4p1Va666LNhrFMtF3tZKlTDvgdOFlqN-zUGbWLWajishIrY5DTNLYovSDJJ2co6MCCwrxmmd6u0wU-CtiptRtUQohlesWT1X0I4kR-NrCEmIIFRGelq51TpDpN2jnuxFrUWfaop44QqkpsixOkeSsFwpyiIoHV4IN-NAtFJboRbtIqoILbeS0SJe1i2_tl8Xi4xizaGMTbVg3w4C6biZ8LrTot8bmqK5TWIKQWqUWloIyQhHJaAMTQaq4SQWNzTeTaoc5MHEkWrWHEY8moxcmLeQkQStoV9lsiM7S6HlKE6nLKfAJK3GVq0WQeK8fmKNcascCXElWJJd9iwvNSi9mNvGsRwsvvxyHsw0OqqptnxsWafZojyKIykTLXobrtrgcAoryw9tNE7TVstKaCBBmEJ2LMUsXJKCCBk1kWpsul1ZnZRgWoSnleyJ9njK9VrZXCrYFojg6ofqqAam-jOFbEvQIIcLJF9f-quNDsQiS9ac_ljMEE30OjQXKrmVeCxG7iE3UmIcLO4g0zVPFXAN5biakMaMydRuQRlJ2NuaTOEqKabgJg8hc8KNG6PLgDxn1fDGZAzRLOsMhnEGF6--CEZJU6ly4hJmqiXpha4Wumlis26U5hAVtMxgmpVUIzPOoFgpsVVLLOHiSOrKysoBq0Zx4xZZTVFJOwqozvXM7WEQtpmkq7GqF-ZKnqo2YBGysVvsSJPm0I1kDMHOdHEkN09hm8NtJWnmgA1HDhVoL2ENW6odeXkN2SjJCmjxotduUws-l3OyDu8KtGUMMc7ICrJu6XpMSsdQkSTuwEC3ddtk1sBUQyktmMqA8Ti6G-crYSsVVlmFXE5VLeQOtC5kuFCrCEaqTeuJWQu662W5sr4KQGcrRVjLFlHVdK1AV8Wt23ivgJmLsuU8TcEjG_ZdREvB1iiaHKhcz1xJMxPOah1FhvcK8lOaK1nSFjSPk8iRxghUySuliw230olEzwCfOKfzWq1gbFMH82iPYAk3rlNhzICdTIYblWwvYSnWDliN3TRvLwcmQhMcPlYJ2G0NuYpJD0KtVEqpSuaU1fJLgdp0aRyn1kAzM6_jW-6Ab1vxovqtwJTZzmZ3YM0gTVgRVm-zNm61DvaQaqVr1A4IUsQ8LLkMJpXarHRIxlLSNK3AkqhuGv2uQA6pcuSkrmCpllETvY4g4sgt3IZgbhUtSQ3orOouknUJ1taUPXRIDbq5EVeuvgzEsQQ5jgvmTk10zaCg2G2Tm9ZAzCJO3ZSLwN3M9XWerUD9ymotaWDvHEm_DMyQrMou9w7OsB05t1MLNLZrvBlRCyiKjkSNicYUzuazIJWzclQ3ziAtZVVs5a6Azhg6GYPKYGHFPaTKYO5ULdIIuIVksabFDJrRRdw9tAxEiUvZpcIOmrAj69TTtpaJsMpgneyUu9ZtweRYk6l2zKDS5JJsq0xhJBfulMtcL5kscBlAcSNHUsIK9qirs87yELpvrLnOzBCklpo5lYvGlJFUjIBTKTkkcU2BGheP1KqrgF1TrSljrYDcpm5KK2RSYU1nAERu3LaNXQDIceRIjmMASHIjSZI0AkiS5EiSgUcX1gQDgCRJkiR5B2Akx5EkqQOAJEmSJJkFgOQ4kiQZcJQhMbwENm7bxnHnBLZx3MaRbwBIkiTJcTcAOHIkSZLBNhvWxiSAJEmS5DgFYBxJkiRpB4AkSZIkeTxg27Zt28ZoLB1FqA84qpop2DMPxB3yyHWxCEq-fmsS1w4YUjo9rZTHlFH0q2AdUZIptdIgy0RuGddqgdyotUKb6kDbE4ukV4FunQyxDEpOHKgiUSHekezIka8Kys0TR3PlCFqPHrR10teOkYSnQKOlepQdzQALJTqbhIqAomiNxIiNQFTXZWWneXHhSPESVm4lyc1OEahpnMKFsBQojionS9MISIq9u9dX59iNgu2gpbd5mlatoGmpjpyqjmBt5mp0Za5gpVZzpUR17lgp0gqgLVIIdvMIpMbktErBDJqS65hy7ApUjiOjsZjXVtnitEDxJq5aG66ApGvxHWmugByp0ds4LmGdNmmEymntVCmzCtSY5M1qUBO8kizbWc8NqLsw9nW0Gs7tY1vtFaiWTVDsoGVNdfvy7EFD0zJMJMuhI8etAzstQSK9TqvpdEzdBMUeNm5USi3YDuxszZiSWgyyWeoovtoMyHWWq2ZV91RVoMpgpZpQ1zgMgaS7rZxLzEDtpK2trKygm6OGJjhtTtkkxQyorhvXclcNUm6s1VLtDlhq1joy3Qo2RpWU-ZK3zs1CNSH1RJqjWGsho6Zx2oSsgGJIcZs6ziDMOLLqmo20XU34CDxWFAlOzAwIclQXst8MptWj3tLfCOz17dx5VMYMkhLXgCU1Tg1GjMAbNW7bZkNg47Zt2-bugBtDMS63bTCdKbESGk7cNHK5EMBNJbmW4hLKcq0pfkQL4lCtJpZcZ5lRYExhk0XS7spt4ROnLeTaHEJbJykFmkoBhLVwfG1lDRkpRBIW0aM6dXgKONwlc6IpD-5YTcW9ySC6cTwpkhfWUFbUi2AfdLNotAyhFTuqiuqzQF43RreH1EHc2G2famXv3GQzEbaFWyWKvA54ay1HF-0WaJMjq906C-JtlpSGDtaOkSItYVtKktMmrGCT1qEbaSxh1DZOJObUoCBLiW2dhTBZSboKOn4bOVnLCsim9Vyu6wioklaqLMwMRpELrXJT15RJUHWB4zRiZbPWgFzGEW1m7GCjCpoi6w7ArGdeWR1xUdVE4AhQkiPNbtYLqG2e6JS1CkRf_tqZwgo4U6xWhpT3lokwzIBRsy3tVIsgWTSNDUusYBTn6eN4rWCcrBCVxGDNVEXBCm6R5sZ2KBO2buNHk98WyK7DXHWwCsQ1pNVVy-YUSnKsYVypCiTXrkDsqC4TR61A2aJ02vjOIJ2ujquiZO-cSL4MSpGOSs3HCiZxVDdx8hbGiZS5qekUStXiHI5P1o5N0sqA6vpMc_utIDWYcuJI7GB2uf5jpa2A1k7O2hJ1S50MvwjebFu4sckMmFXwNDJdC2gPGbeqYB24bSA5bg7XWI0ky2DTiDPkIu6A4WapZRrtoJu8rhnJy4CktZkdm2QuWUj0CnjWs1anShG4kiTXnKkQFnggS42-DhS-8spVTOYSjjIvgZtOSiQV7IC9NHYYg8yAy-Sq4mduYeU4rsSaXE-dSdsI1MmiVVS8ErZp3kBO5wjEUZ4litUKhlYLm5QIFtPFgkxBVCWnInXNoIVYldbH66DrRk768I6gWceUHbhsbZ1MuBLKqaPWZtUSumrm0pKsEkSW8bZx9gzKVdvYjBkIn41UzoBFK3LyJsuA6kZz3MUuQeU0DhvnbYEcW5bdqWANoUQrDbibYg2RxwykcQtFxuoKIuEcw871DDhunD4tzhWRiZKuwORIrt6cHWGatkIUN7RA5GRSnbytgA2mUh5lce5QSPAOVI1y5IjtErKQGbd1vwxM0p1FrtcMZJIdtTLS1s6NgKxAtkKwi3lMgWQ3umtJ7EAdaSMlRayAXbdarDp5LxEpxAgMd4zJkKwMhp4iuTKzDKaQSkOh3w7Gkde4udP2zowSzGDUzMPuSMvAJUlVLASPgOSocix9s4DzYFbqOmlN2Si5CDBPTUeN3AyiSASTj_gKQrGctqdxE0QupVatDbeMTdKKQCOVhgu562BiGc8kqZSgbmtJFpWswNs2N6N8cTEdLcAIqLKKN2nHDKayFL-VSAtmrgY5caoKppCbxnRPxkzJ4IxAzLamG0dPweK2jp0WzCAUF4lmuGuB5PqpZGWxi-Tdu83IkRu58bvpIpTjyo49xVau11BOPq_Mb1I30pTKhuLbE-qCppVr1bMoG5MWofRNaO9FTtUULKkcxK1se60u4PnCSpYeriVaxorWtSTbT3ZK-p8kPe3OUiL2Y0mSV6vGnamuo-xkacV8jGIsCdadKA_ipsBKXQamggPJeduCoXCctcQSaILpxDhsIvSya1mXrwzUEtw0g9UKyjCDNMmYFxWa1G6BBUWGlK_WoJooLVmiBGHikq3TOO9AEUt8yriBEt1F5gjCrW17llgN6E7bRoi2FDau7PaxcRMsVt5Wr9go19VEzaBf2C4UUY5gmjI1SF2MQJU7ZWVKrUDpFujiln1R4UivHsaQmzSNxgpGtiM9t9kSpn4bzbHvCnaKZmWq2AfTjebrYBCpdao7zaCoRVZr8-pgwzgwjVDtAJ0mjdKkiRBhRbsKSrXlNKtbD-aKFDROcw1Ehiq5jtAIKHooV3bV9lCVdKsge8N14oiuIJm0ccukraAjR32iF89grKzNdamJcSEltQ7aTZpjxc0KIillx5XHCHysPSmv5gx4W2O7Nxf4EFLybMEchVUcy81g-kryZoEsoRzLTe5Iz2DuuJGTo4TWsS7EEqZqZPWVzwm8cSfnTlMNZnTdRBWqLFRO0FhyCwrNsgWL4WWmlaQNfAKyp7a_oiJiLDOWg3KsAU5ZdmQWsYhsm3Ua6JUbian3EvyU9yIn9BBIfVv4gU81SFF9pZFK-RRuGcuho3tJyUIEIdS4jUsJZ2ElNbAWKI9ApOJ10yWFL91xwhaia6MmSbQUVIm9V4avEEx1c5up0g7a8M1AJlYnF9pUb4H7NrZay2vBJrc2k2XXIB0rbxGVbEHSTPLkdHVP3SiyFkrSfMuqxxSoUywTl7IK1nkqWR3qFNigHFmJWfeOTZKu4OsYU5RWNWLaxG3QKsxAH0Xr5MYsgRRlrRxdeTFZKPQOWKXeYsHHFFSVOiuy4xLmktxOiccSTLEdt06UeF2KVM1gajRx2oivgNSoT9Uo1WEamTIm9CohXLeNQMbUdBiaxp2WflvGlTgayFeymZpJEhaXJbvJbhY-6rEiNo1q35r2NWEeGLEiFZUh7qBmzS6rAtsoEfP2qgIqN07jV62KJL5mJ8xvQMXyuSqOmKTZmr0gILnRjZnWLNy3E6apVcqEmXur4e1Ezc0MhkFCmGVjYezBbFiQqsRKoZqj4hX5pCtSP8sQhnUaqW1RJSqSNgF3q6VIkts6gbI6OvI3h4nQmlz1ozQkau0juIS0Qiw7auE3tEEvYXRsZuaB2jJr6uOYLyWaxR4Y1iR7T2sS6u4Z3ULmGNjN21tO7hS4nJs8rxUoT9HUi6Ds6-5mxy1BJLdNZmZPgc7IbpV61UCqx7FkV4FwUSi1CpI5kpRt8Agwbx1liMIIYgvVuNbBCKTsXsSQmQeVyYQ0IV2XedKKrSAvabkyS-5gMV0WNe3twGuVgdykiZNZTb8MQkvFX_GvDiqZ7Jqx6Qy4kc0YieoUxlCMptKYB1WRQO_AZunS7XqsYBZOkdyUruCy6A2gRc6A21apH0mB9Slu2wbkbbohLvQWuEnhBE2qFqZQlXpJsBRaRZ4qzkyZ5SIjVEHMJknKsq1BI7RtG_eKABbHbKrC7kCkWIdGQ4GyoUnzCjItYBipvAq8yFbt7WcMKI5j6s3iDkRSmwxGV-cOlub0oNvY0poFzYBrV5kx60thYpm17IgtARLGrKsJfdFYkcIUJrr1mHrzCMLzKzV9xgy6Vh1Hpe0SuDYd125Nm9hzUw-hHjlS3JiNQJ1Ijdu2fWbj2CcZ14pk8msp48awbTU3Vhr-TrTvKFIcJPojF333KkjyGUaSZTV6aQ3L1U5roOuwHEeaE3BkySIiTaBS7LYsgZnfdoSZBqHdpK1LJ6nQXJpwFchNZ-vv8xp4cqvLqa0cGpWl9XayEpCRW4nNE_pKXYuXQZRLUfXLKmFox06kAmxhaUUlY2rPQBndZc5KgVBZVccIYtqqta31CDpUHcdw6hTWRcLIlSsKUoKsXoqS1xKRsq3AEDV1YXdNQVsLcavky2BUuV3TLK2A5BI-god9seFE9A6yU9tW2-oKUqZ0RZLgCjw5p0l25BC4kZnYadDW1I1grKALt9LbprSAbMalGvUuQSahbhPJagGlRHEktWixXCXhDOQRDBlSVh0mU7LYCU0RTgM_Q7Y6EtCuUUuyS_aOldRNYTI30c12jsDe9orzdy2Bs1qyYl1X4TtVsuuqWM4YTasUyMbarHYtEbyJ3Bo12BWYivAUrq0sGlIcSajNGBOaV83iXSaO2orMgR1LTvvmbqIkV1bqhycBO6edpup4cqVNsBKorPfKk-kQVj4uOb2vFDR71CiSzRK2yQu9bRk2U5GA74Bmmc-a3Duh2wt71OqKId1YaORWTKF70pIrx4lS3SjKDFAtoq5NRBOoUKRmaXYWRJGeyNbGFNphZDhQSOeQyWBtYUOViaKmq4Ds5tTbOi1hVD-ObJWqoF3EMeuQZM0kSbIUxka8to7uDEI22iqLLA1GVqU1kdkKUm7juLHMxtBJwoygoxXHHceqgNI0coPGksAkukX7kCphGrtuXkWBENVIzxI-MSUnUrAIukf69lHJDDYvE0teUQ1Y1V9IUo3mzkVUz6AUtQccy8pgLSQ5BXnLIBYzmirr7WBhyUVr9WjuHE0rCwhyWueNtw5IbfpWqrgUNnoiaXLDCiy50lvsjtdQkWKLAKNekZZirKCnaDVvVu3gHNlVYX3MQLIoSq6KgTCdRPIO0I2jusa2CmbG5uautQ5Ipl3WT64IOLVbW9PQKNcZZ8-A7Dp3pswbQdQ6PYGNK6HaxUDiVs2AZRnOzRaRUJ1Z6RRI0iTHyfYKRI4cOjrxEqgqospuKyO4VZK_1lMokw2JQ2EolrXkqIzAI9wynWjn4FHvUqacrIC0RnZac4WPmUzNECZOpSgqWw2qbCREedIMNFu0NS7rDCQRm5iOledUzULLgCLLkIOJzyDaI66hO--g3DQi01zLYCJHtJ2biVHhKPYMtKkxqW7hDEp1K9Uh1g6aTE04qTYAYJ3fXApcCBWS5MWA3OSpIoePwJXFTVo2rGAVRlHst8tgbmeSpDZxUJUksA6kcd4lkuUIso2UtZG9ClrW79RZ6QpmbuLiclb31E2k7CAqw45ki60A46rW27Yq4D2fkhOizUDkok4SxYkyWSmyCFauWgc2xgT6dKJu7dAIqpENKQbnCDROpEfX1vfUiXK1YHY3fvRXzGD8yJUhCY0A3TJtU4XvgNpMip1KbQ-VLPQMwoxUJ1rIDDQuKyN5qg5Ek_28smIPSHotx9XY9lJF5MxAqi4uJffqQLS4qSZr12BVG3lb7q1gmRdtnJiNcF0kyAqGNkw5KuoOyG3XXJbpCMxxZzuZ9A7IjBzXzRQHk4Xi66Ciak0sa9ZAk7uQJJmtIBrDQhIZDCCisukrYW2QWUj1CrhUGrmp9grYb-oYUuwMOGlkzJLUCMht7lzQHpubADSzYJ1ftv4KrIGVNW4YtUphGyv65IpeYkaXigzfwRxbJK4eULOsuofVTeKhI0V7rVx6syVN58RFipMWLcXb7HWa0ool1tVSbRerw1U13_R970Yst2rTUDSHiqJEkdDB3u8tLXXEZRi3iLuKOJJsq89gTZ4TTUs9wXJSZIUvXR-7sZUYe8uDt1KkJhPJMc6uUfVsadMGMupEzmqFtXHdstEeH4X3qL6u60iO3kZOOfwyo_KeppGj8RXzk2zV00dWW80n0QTMxLbTfSB8jmdFp02aKlNlK1l97XheSYTXkOLGwR4faduDnqHCOE2_ZLbx6rq35oJe0p26lepuXOWTt7Ie_DmLNi4IDSZom4YzSEtD47tmVUra4GERBpUJACE0Uua5njuKvpK2ddy599W22r4k_U2rbBguUz2dY6tWrvTZuZr9sdZE7-olvZu1lUrIGj9QIfauaCtaeXRZr4kfW5Hlxb0fr3U2lWqt6sOSaYEyZJEIdkWdSu89fZvqdnrVNRmum_xp2jTnh2ISAYJiKwN0oNFtnSyD5Eiyw3dPBAY5diql0b9ecXVDBo2Rs63nWNr6tfuyXTmu8nIabShdNojSNGobq52IxMKBgybmG60GIeX0pUNWh0AA9KxbRYyBJnluZH2Jc4hI2iigbuXGkTgINqqeKLVUDKTR2dQt6gpWMhzXTRd4B2BULCDiSHXDgy8AnTuMqiROgCsJsYs4tGAjt1WcVdE2SATnCLSKbNhtyAJQciPHaL0Eyo0bWcX0DiZu29hwFntXxIIy4KuVckrtDCD4tGYSHctAFDmNzVbPQCvDauJGqTgafrcINDGcNGnZR7Zt3PoALxSCUqY0wbyrSHmTIZc"}], "analysis": [], "attachments": []} 2 | -------------------------------------------------------------------------------- /docs/Communications Design(1).jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vcon-dev/vcon/a0a9ea7f9c2a42a2d1b36d96d80ee218a453602c/docs/Communications Design(1).jpg -------------------------------------------------------------------------------- /docs/What is a vCon .pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vcon-dev/vcon/a0a9ea7f9c2a42a2d1b36d96d80ee218a453602c/docs/What is a vCon .pdf -------------------------------------------------------------------------------- /docs/vCons_ an Open Standard for Conversation Data.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vcon-dev/vcon/a0a9ea7f9c2a42a2d1b36d96d80ee218a453602c/docs/vCons_ an Open Standard for Conversation Data.pdf -------------------------------------------------------------------------------- /tools/embed_streamlit_demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | oEmbed Example 7 | 8 | 9 |
Loading embedded content...
10 | 11 | 12 | 13 | 14 | 33 | -------------------------------------------------------------------------------- /tools/postgres_schema.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- PostgreSQL database dump 3 | -- 4 | 5 | -- Dumped from database version 14.5 6 | -- Dumped by pg_dump version 15.2 7 | 8 | -- Started on 2023-03-28 15:02:00 JST 9 | 10 | SET statement_timeout = 0; 11 | SET lock_timeout = 0; 12 | SET idle_in_transaction_session_timeout = 0; 13 | SET client_encoding = 'UTF8'; 14 | SET standard_conforming_strings = on; 15 | SELECT pg_catalog.set_config('search_path', '', false); 16 | SET check_function_bodies = false; 17 | SET xmloption = content; 18 | SET client_min_messages = warning; 19 | SET row_security = off; 20 | 21 | -- 22 | -- TOC entry 5 (class 2615 OID 2200) 23 | -- Name: public; Type: SCHEMA; Schema: -; Owner: thomashowe 24 | -- 25 | 26 | -- *not* creating schema, since initdb creates it 27 | 28 | 29 | ALTER SCHEMA public OWNER TO thomashowe; 30 | 31 | SET default_tablespace = ''; 32 | 33 | SET default_table_access_method = heap; 34 | 35 | -- 36 | -- TOC entry 210 (class 1259 OID 53471) 37 | -- Name: analysis; Type: TABLE; Schema: public; Owner: thomashowe 38 | -- 39 | 40 | CREATE TABLE public.analysis ( 41 | id integer NOT NULL, 42 | type text NOT NULL, 43 | dialog integer NOT NULL, 44 | mimetype text, 45 | filename text, 46 | vendor text NOT NULL, 47 | schema text, 48 | body text, 49 | encoding text, 50 | url text, 51 | alg text, 52 | signature text, 53 | vcon_uuid uuid NOT NULL 54 | ); 55 | 56 | 57 | ALTER TABLE public.analysis OWNER TO thomashowe; 58 | 59 | -- 60 | -- TOC entry 209 (class 1259 OID 53470) 61 | -- Name: analysis_id_seq; Type: SEQUENCE; Schema: public; Owner: thomashowe 62 | -- 63 | 64 | CREATE SEQUENCE public.analysis_id_seq 65 | AS integer 66 | START WITH 1 67 | INCREMENT BY 1 68 | NO MINVALUE 69 | NO MAXVALUE 70 | CACHE 1; 71 | 72 | 73 | ALTER TABLE public.analysis_id_seq OWNER TO thomashowe; 74 | 75 | -- 76 | -- TOC entry 3620 (class 0 OID 0) 77 | -- Dependencies: 209 78 | -- Name: analysis_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: thomashowe 79 | -- 80 | 81 | ALTER SEQUENCE public.analysis_id_seq OWNED BY public.analysis.id; 82 | 83 | 84 | -- 85 | -- TOC entry 212 (class 1259 OID 53480) 86 | -- Name: attachment; Type: TABLE; Schema: public; Owner: thomashowe 87 | -- 88 | 89 | CREATE TABLE public.attachment ( 90 | id integer NOT NULL, 91 | type text NOT NULL, 92 | party integer, 93 | mimetype text, 94 | filename text, 95 | body text, 96 | encoding text, 97 | url text, 98 | alg text, 99 | signature text, 100 | vcon_uuid uuid NOT NULL 101 | ); 102 | 103 | 104 | ALTER TABLE public.attachment OWNER TO thomashowe; 105 | 106 | -- 107 | -- TOC entry 211 (class 1259 OID 53479) 108 | -- Name: attachment_id_seq; Type: SEQUENCE; Schema: public; Owner: thomashowe 109 | -- 110 | 111 | CREATE SEQUENCE public.attachment_id_seq 112 | AS integer 113 | START WITH 1 114 | INCREMENT BY 1 115 | NO MINVALUE 116 | NO MAXVALUE 117 | CACHE 1; 118 | 119 | 120 | ALTER TABLE public.attachment_id_seq OWNER TO thomashowe; 121 | 122 | -- 123 | -- TOC entry 3621 (class 0 OID 0) 124 | -- Dependencies: 211 125 | -- Name: attachment_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: thomashowe 126 | -- 127 | 128 | ALTER SEQUENCE public.attachment_id_seq OWNED BY public.attachment.id; 129 | 130 | 131 | -- 132 | -- TOC entry 214 (class 1259 OID 53489) 133 | -- Name: dialog; Type: TABLE; Schema: public; Owner: thomashowe 134 | -- 135 | 136 | CREATE TABLE public.dialog ( 137 | id integer NOT NULL, 138 | type text NOT NULL, 139 | start timestamp without time zone, 140 | duration numeric(10,5), 141 | parties integer[] NOT NULL, 142 | mimetype text, 143 | filename text, 144 | body text, 145 | url text, 146 | encoding text, 147 | alg text, 148 | signature text, 149 | vcon_uuid uuid NOT NULL 150 | ); 151 | 152 | 153 | ALTER TABLE public.dialog OWNER TO thomashowe; 154 | 155 | -- 156 | -- TOC entry 213 (class 1259 OID 53488) 157 | -- Name: dialog_id_seq; Type: SEQUENCE; Schema: public; Owner: thomashowe 158 | -- 159 | 160 | CREATE SEQUENCE public.dialog_id_seq 161 | AS integer 162 | START WITH 1 163 | INCREMENT BY 1 164 | NO MINVALUE 165 | NO MAXVALUE 166 | CACHE 1; 167 | 168 | 169 | ALTER TABLE public.dialog_id_seq OWNER TO thomashowe; 170 | 171 | -- 172 | -- TOC entry 3622 (class 0 OID 0) 173 | -- Dependencies: 213 174 | -- Name: dialog_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: thomashowe 175 | -- 176 | 177 | ALTER SEQUENCE public.dialog_id_seq OWNED BY public.dialog.id; 178 | 179 | 180 | -- 181 | -- TOC entry 216 (class 1259 OID 53499) 182 | -- Name: group; Type: TABLE; Schema: public; Owner: thomashowe 183 | -- 184 | 185 | CREATE TABLE public."group" ( 186 | id integer NOT NULL, 187 | uuid uuid NOT NULL, 188 | body json, 189 | encoding text, 190 | url text, 191 | alg text, 192 | signature text, 193 | vcon_uuid uuid NOT NULL 194 | ); 195 | 196 | 197 | ALTER TABLE public."group" OWNER TO thomashowe; 198 | 199 | -- 200 | -- TOC entry 215 (class 1259 OID 53498) 201 | -- Name: group_id_seq; Type: SEQUENCE; Schema: public; Owner: thomashowe 202 | -- 203 | 204 | CREATE SEQUENCE public.group_id_seq 205 | AS integer 206 | START WITH 1 207 | INCREMENT BY 1 208 | NO MINVALUE 209 | NO MAXVALUE 210 | CACHE 1; 211 | 212 | 213 | ALTER TABLE public.group_id_seq OWNER TO thomashowe; 214 | 215 | -- 216 | -- TOC entry 3623 (class 0 OID 0) 217 | -- Dependencies: 215 218 | -- Name: group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: thomashowe 219 | -- 220 | 221 | ALTER SEQUENCE public.group_id_seq OWNED BY public."group".id; 222 | 223 | 224 | -- 225 | -- TOC entry 218 (class 1259 OID 53508) 226 | -- Name: party; Type: TABLE; Schema: public; Owner: thomashowe 227 | -- 228 | 229 | CREATE TABLE public.party ( 230 | id integer NOT NULL, 231 | tel text, 232 | stir text, 233 | mailto text, 234 | name text, 235 | validation text, 236 | jcard json, 237 | gmlpos text, 238 | civicaddress text, 239 | timezone text, 240 | vcon_uuid uuid NOT NULL 241 | ); 242 | 243 | 244 | ALTER TABLE public.party OWNER TO thomashowe; 245 | 246 | -- 247 | -- TOC entry 217 (class 1259 OID 53507) 248 | -- Name: party_id_seq; Type: SEQUENCE; Schema: public; Owner: thomashowe 249 | -- 250 | 251 | CREATE SEQUENCE public.party_id_seq 252 | AS integer 253 | START WITH 1 254 | INCREMENT BY 1 255 | NO MINVALUE 256 | NO MAXVALUE 257 | CACHE 1; 258 | 259 | 260 | ALTER TABLE public.party_id_seq OWNER TO thomashowe; 261 | 262 | -- 263 | -- TOC entry 3624 (class 0 OID 0) 264 | -- Dependencies: 217 265 | -- Name: party_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: thomashowe 266 | -- 267 | 268 | ALTER SEQUENCE public.party_id_seq OWNED BY public.party.id; 269 | 270 | 271 | -- 272 | -- TOC entry 219 (class 1259 OID 53516) 273 | -- Name: vcons; Type: TABLE; Schema: public; Owner: thomashowe 274 | -- 275 | 276 | CREATE TABLE public.vcons ( 277 | id uuid NOT NULL, 278 | vcon text NOT NULL, 279 | uuid uuid NOT NULL, 280 | created_at timestamp without time zone NOT NULL, 281 | updated_at timestamp without time zone, 282 | subject text 283 | ); 284 | 285 | 286 | ALTER TABLE public.vcons OWNER TO thomashowe; 287 | 288 | -- 289 | -- TOC entry 3457 (class 2604 OID 53474) 290 | -- Name: analysis id; Type: DEFAULT; Schema: public; Owner: thomashowe 291 | -- 292 | 293 | ALTER TABLE ONLY public.analysis ALTER COLUMN id SET DEFAULT nextval('public.analysis_id_seq'::regclass); 294 | 295 | 296 | -- 297 | -- TOC entry 3458 (class 2604 OID 53483) 298 | -- Name: attachment id; Type: DEFAULT; Schema: public; Owner: thomashowe 299 | -- 300 | 301 | ALTER TABLE ONLY public.attachment ALTER COLUMN id SET DEFAULT nextval('public.attachment_id_seq'::regclass); 302 | 303 | 304 | -- 305 | -- TOC entry 3459 (class 2604 OID 53492) 306 | -- Name: dialog id; Type: DEFAULT; Schema: public; Owner: thomashowe 307 | -- 308 | 309 | ALTER TABLE ONLY public.dialog ALTER COLUMN id SET DEFAULT nextval('public.dialog_id_seq'::regclass); 310 | 311 | 312 | -- 313 | -- TOC entry 3460 (class 2604 OID 53502) 314 | -- Name: group id; Type: DEFAULT; Schema: public; Owner: thomashowe 315 | -- 316 | 317 | ALTER TABLE ONLY public."group" ALTER COLUMN id SET DEFAULT nextval('public.group_id_seq'::regclass); 318 | 319 | 320 | -- 321 | -- TOC entry 3461 (class 2604 OID 53511) 322 | -- Name: party id; Type: DEFAULT; Schema: public; Owner: thomashowe 323 | -- 324 | 325 | ALTER TABLE ONLY public.party ALTER COLUMN id SET DEFAULT nextval('public.party_id_seq'::regclass); 326 | 327 | 328 | -- 329 | -- TOC entry 3463 (class 2606 OID 53478) 330 | -- Name: analysis analysis_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 331 | -- 332 | 333 | ALTER TABLE ONLY public.analysis 334 | ADD CONSTRAINT analysis_pkey PRIMARY KEY (id); 335 | 336 | 337 | -- 338 | -- TOC entry 3465 (class 2606 OID 53487) 339 | -- Name: attachment attachment_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 340 | -- 341 | 342 | ALTER TABLE ONLY public.attachment 343 | ADD CONSTRAINT attachment_pkey PRIMARY KEY (id); 344 | 345 | 346 | -- 347 | -- TOC entry 3468 (class 2606 OID 53496) 348 | -- Name: dialog dialog_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 349 | -- 350 | 351 | ALTER TABLE ONLY public.dialog 352 | ADD CONSTRAINT dialog_pkey PRIMARY KEY (id); 353 | 354 | 355 | -- 356 | -- TOC entry 3470 (class 2606 OID 53506) 357 | -- Name: group group_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 358 | -- 359 | 360 | ALTER TABLE ONLY public."group" 361 | ADD CONSTRAINT group_pkey PRIMARY KEY (id); 362 | 363 | 364 | -- 365 | -- TOC entry 3472 (class 2606 OID 53515) 366 | -- Name: party party_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 367 | -- 368 | 369 | ALTER TABLE ONLY public.party 370 | ADD CONSTRAINT party_pkey PRIMARY KEY (id); 371 | 372 | 373 | -- 374 | -- TOC entry 3474 (class 2606 OID 53522) 375 | -- Name: vcons vcons_pkey; Type: CONSTRAINT; Schema: public; Owner: thomashowe 376 | -- 377 | 378 | ALTER TABLE ONLY public.vcons 379 | ADD CONSTRAINT vcons_pkey PRIMARY KEY (id); 380 | 381 | 382 | -- 383 | -- TOC entry 3466 (class 1259 OID 53497) 384 | -- Name: dialog_parties; Type: INDEX; Schema: public; Owner: thomashowe 385 | -- 386 | 387 | CREATE INDEX dialog_parties ON public.dialog USING gin (parties); 388 | 389 | 390 | -- 391 | -- TOC entry 3619 (class 0 OID 0) 392 | -- Dependencies: 5 393 | -- Name: SCHEMA public; Type: ACL; Schema: -; Owner: thomashowe 394 | -- 395 | 396 | REVOKE USAGE ON SCHEMA public FROM PUBLIC; 397 | GRANT ALL ON SCHEMA public TO PUBLIC; 398 | 399 | 400 | -- Completed on 2023-03-28 15:02:00 JST 401 | 402 | -- 403 | -- PostgreSQL database dump complete 404 | -- 405 | 406 | --------------------------------------------------------------------------------