doc: no jobs with webhook

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2021-02-24 16:33:03 +01:00
parent c57e9273fb
commit f4323e48b5
2 changed files with 19 additions and 8 deletions

View File

@ -34,7 +34,7 @@ will append `{"test":"me"}` to the file `data-bot-bash/webhook-fifo-<botname>`.
Now your Apache is ready to forward data to Bashbot.
#### Enable update processing for Bashbot
#### Webhook update processing for Bashbot
To enable update processing delete the file `data-bot-bash/webhook-fifo-<botname>` after your webhook is working manually.
All webhook calls are now forwarded to `bin/process_update.sh` for processing.
@ -42,9 +42,14 @@ All webhook calls are now forwarded to `bin/process_update.sh` for processing.
Every incoming Telegram update load Bashbot once for processing one command. Even it seems overkill to load
Bashbot on every incoming update, it's more responsive and create less server load than polling Telegram
If your bot uses `addons` or `BASHBOT_EVENTs` you can't use webhooks as described here.
*Note:* webhook work without running `bashbot.sh start`.
This webhook works without running `bashbot.sh` and thus has the following limitations:
- no startup actions
- no backgroundi* and interactive jobs
- `addons` and `BASHBOT_EVENTs' are not working
\* workaround for background jobs is to start them in the channel and execute `./bashbot.sh restartback` afterwards.
#### Enable webhook on Telegram side
@ -82,5 +87,5 @@ and read updates from the named pipe `data-bot-bash/webhook-fifo-<botname>`, sim
But the default webhook method is so convincing and responsive that a special high traffic mode is not necessary.
#### $$VERSION$$ v1.45-dev-39-g8b18f25
#### $$VERSION$$ v1.45-dev-46-gc57e927

View File

@ -6,7 +6,7 @@
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
#
# shellcheck disable=SC1117,SC2059
#### $$VERSION$$ v1.40-0-gf9dab50
#### $$VERSION$$ v1.45-dev-46-gc57e927
# will be automatically sourced from bashbot
@ -46,6 +46,10 @@ start_back() {
printf '%s\n' "$1:$3:$2" >"${cmdfile}"
restart_back "$@"
}
# $1 chatid
# $2 program
# $3 jobname
# $4 $5 parameters
restart_back() {
local fifo; fifo="${DATADIR:-.}/$(procname "$1" "back-$3-")"
log_update "Start background job CHAT=$1 JOB=${fifo##*/} CMD=${2##*/} $4 $5"
@ -62,9 +66,9 @@ start_proc() {
[ -z "$2" ] && return
[ -x "${2%% *}" ] || return 1
local fifo; fifo="${DATADIR:-.}/$(procname "$1")"
log_update "Start interactive script CHAT=$1 JOB=${fifo##*/} CMD=$2 $3 $4"
check_proc "$1" && kill_proc "$1"
mkfifo "${fifo}"
log_update "Start interactive script CHAT=$1 JOB=${fifo##*/} CMD=$2 $3 $4"
nohup bash -c "{ $2 \"$4\" \"$5\" \"${fifo}\" | \"${SCRIPT}\" outproc \"$1\" \"${fifo}\"
rm \"${fifo}\"; [ -s \"${fifo}.log\" ] || rm -f \"${fifo}.log\"; }" &>>"${fifo}.log" &
}
@ -99,9 +103,11 @@ kill_proc() {
fifo="$(procname "$1" "$2")"
prid="$(proclist "${fifo}")"
fifo="${DATADIR:-.}/${fifo}"
log_update "Stop interactive / background CHAT=$1 JOB=${fifo##*/}"
# shellcheck disable=SC2086
[ -n "${prid}" ] && kill ${prid}
if [ -n "${prid}" ]; then
log_update "Stop interactive / background CHAT=$1 JOB=${fifo##*/}"
kill ${prid}
fi
[ -s "${fifo}.log" ] || rm -f "${fifo}.log"
[ -p "${fifo}" ] && rm -f "${fifo}";
}