This is really bad in Terms of perfomance and non intended side effects. In short: use the thread::sleep only shorter than a second, max should never reach more than a few seconds - because it simply blocks the few threads, openHAB has reserved. 7seconds is really long in terms of a CPU.
my approach would be something like a state machine there’s two tutorials on this one:
simple put: they will monitor a state and react on that. In your case I would add a proxy item, which indicates, that you didn’t pick up the phone yet and it has two or three states like the first 5 seconds, the second 5 seconds and the last 5 seconds. for each state change you just add more volume and can also have a different say-command.