David,
I've tried your suggestion - but no joy (yet!). I'm using bayonne1,
so I looked at file.cpp (in ccscript2 source) and found tests
'exists', 'file', and 'dir' (with exists and file being essentially
the same) - but I'm not a c++ expert ;)
So, I have 'use file' at the top of the script, and within the script i have:
set %1 "file_to_play"
.
.
.
if -file %1
then
play %1
else
play missing_message
endif
but I always get the missing_message.au playing. %1 contains the name
of the file to play, without the .au suffix
I am assuming that the same conditions apply as with 'play' - so that
the default extension is .au, and the various possible locations for
the file are searched (although, to avoid path problems confusing the
issue, both file_to_play.au, and missing_message.au are in
/usr/local/share/bayonne/UsEngM
What am I doing wrong?
Tony
2008/5/1 David Sugar <address@hidden>:
Yes there is. With "if -file xxx" or "do -file xxx" in a loop, "case
-file", etc. There is a -file and -dir option for conditional tests. With
Bayonne and ccscript2 these were installed as a separate dso with "use
file", with bayonne2 they are built-ins. Check server/runtime.cpp
"addConditional" for full list....
Tony White wrote:
Thanks David,
So there is no way, other than jumping into a TGI script, to test for
an audio (or other) file's existance, so that a decision can be made
if a file is not present? Do you think it feasible that an external
TGI script is run after every keypress as a caller makes choices? Or
is it better to run one TGI script at the start of the call, to
populate an array with ALL possible files' presence or absence? The
files may run into the tens of thousands! so it would be a VERY big
array - and would be at least four-dimensional. And as the system is
dynamic, files may appear, or disappear from one call to the next.
Tony
2008/5/1 David Sugar <address@hidden>:
There is a "play.one" option, that plays the first file that is found,
and
only one, out of a list. There is a "play.any" I think, that plays any
that
can be found and skips any not found in a list. The default is to abort
if
not found.
Tony White wrote:
Hi David and all,
In bayonne script, if I list several files to play eg.
play %1 %2 %3 ......
...where %1, %2, %3 etc. variables have been set to file1.au,
file2.au, file3.au .....
so long as all three files exist on disk, then all is well. BUT if,
for example, file1.au doesn't exist, then the play will abort -
without playing the rest of the files.
The files are dynamically generated outside the bayonne environment -
and may sometimes be missing. So I am stuck on how to test within a
script that a file exists before attempting to play it - and indeed to
substitute a 'default' file instead.
The only way i can see is to jump out into a TGI - but is there
already a way to test this? And if not, maybe this would be a
possible test to include in the next version?
Oh - and before I get the suggestion:
play %1
play %2
play %3
....
yes, that works insofar as playing all files, even if one is missing
- but there is a 'step' delay between each 'play' statement - which I
want to avoid... and there seems to be no way to see if a file is
missing so as to be able to substitute a 'default' file instead.
Thanks,