Distinguish external from internal call

Hi to all and sorry for my english,

in sample, our environment:

5 “public” number: 123 456 301, 123 456 302, 123 456 303, etc
5 extension: 301, 302, etc (last 3 digit of public number)
5 inbound route: first, route incoming call from 123 456 301 to extension 301, etc

301 is operator, all device are SNOM and freepbx is v12

Our goals:

  1. If someone call (for instances) 123 456 305 and there is no answer by extension 305, call must be forwarded to 301 after 30 seconds.
  2. If someone call 123 456 301 and operator 301 blind transfer call to 305, after 30 sec without answer, call must go back to it
  3. All internal call to 305 must not be forwarded to 301

We try to find solution with queue.

Inbound to 123 456 305 are destinated to queue 405 with only 305 as member and 301 as destination for no answer.
“No answer” option for extension 301 is set to terminate call and ring until caller hangup.

Everything works fine with one only exception in point 2. When 301 blind trasfer external call to 305, obviously with this configuration, call not return after 30 second

Where is our mistake? Is there another way to accomplish our 3 goals?

I hope to be clear in my explanation.

Thanks in advanced for any help.

Kind regards.

Massimo